是否显示每个子页面的一部分?

时间:2011-05-09 作者:patrick

我一直在试图找到一种返回页面信息的方法,以便创建登录页。我以前用帖子做过这件事,是为了创建一个博客卷轴,我想用页面实现同样的总体效果。

The Scenario:我在WordPress中创建的页面上使用下拉菜单。嵌套页面将构建菜单。

The Goal:我想获得父页面的子页面。当用户导航到父页面时,我希望它返回指向子页面的链接,其中包含子页面的部分内容。例如,我想显示<div> 带类header.

A Starting Point:

$mypages = get_pages(\'child_of=\'.$post->ID.\'&sort_column=post_date&sort_order=desc\');

foreach($mypages as $page)
{
    $content = $page->post_content;
    if(!$content) // Check for empty page
        continue;

    $content = apply_filters(\'the_content\', $content);
?>
    <h2><a href="<?php echo get_page_link($page->ID) ?>"><?php echo $page->post_title ?></a></h2>
    <div class="entry"><?php echo $content ?></div>
<?php
}
迄今为止,函数返回所有the_content 对于所有的子孙页面。我希望它能具体返回only 1 div with a specific class 从每个子页和disregard all of the grandchildren 第页。

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

两条建议:

要仅为子页面输出“循环”,而不为孙页面等页面输出“循环”,请添加条件例如。

foreach ( $mypages as $page ) {
     if ( $page->post_parent == $post->ID ) {
          // Loop goes here
     }
}
要仅输出每个子页面的摘录,请启用页面摘录支持,然后输出$page->post_excerpt.英寸functions.php:

add_post_type_support(\'page\', \'excerpt\');
然后在“循环”中:

foreach ( $mypages as $page ) {

     if ( $page->post_parent == $post->ID ) {

              $content = $page->post_excerpt; // changed post_content to post_excerpt

              if( ! $content ) // Check for empty page
                   continue;

              $content = apply_filters( \'the_content\', $content );
              ?>
              <h2><a href="<?php echo get_page_link( $page->ID ) ?>"><?php echo $page->post_title ?></a></h2>
              <div class="entry"><?php echo $content ?></div>
              <?php

     }
}

SO网友:Jan Fabry

下面是我用“更多”按钮(也可用于页面)拆分它的解决方案:

$child_pages = get_pages( array(
    \'parent\' => get_the_ID(),
    \'hierarchical\' => false,
    \'sort_column\' => \'post_date\',
    \'sort_order\' => \'desc\',
) );

foreach ( $child_pages as $child_page ) {
    $short_content = $child_page->post_content;
    if ( preg_match( \'/<!--more(.*?)?-->/\', $short_content, $matches, PREG_OFFSET_CAPTURE ) ) {
        $short_content = substr( $short_content, 0, $matches[0][1] );
    }
    echo apply_filters( \'the_content\', $short_content );
}

结束

相关推荐

Read more on pages WordPress

我知道这个话题已经在论坛上了,但解决方案对我来说根本不起作用。我有一些页面,我想使用“阅读更多”拆分内容。因此,我通过添加全局$more; and $more = 0; the_content(); 虽然每次单击“阅读更多”链接时都没有发生任何事情,但我的浏览器中显示以下结果,但一切看起来都正常:http://www.mysite/#more-15有人能帮我吗?非常感谢