使用add_action()
对我来说似乎有些倒退。一个更好的方法是上钩homepage_content()
进入homepage
钩子,然后只输出一个钩子内的每个部分:
function homepage_content() {
$the_id = 5;
$item = get_post( $the_id );
$page_tree_array = get_pages( array(
\'child_of\' => $the_id
) );
foreach( $page_tree_array as $item ) {
$id = $item->ID;
$slug = $item->post_name;
$title = apply_filters( \'the_title\', $item->post_title );
$content = apply_filters( \'the_content\', $item->post_content );
?>
<article id="post-<?php echo $id; ?>" <?php post_class( \'homepage-content\' ); ?>>
<h1><?php echo $title; ?></h1>
<?php echo $content; ?>
</article>
<?php
}
}
add_action( \'homepage\', \'homepage_content\' );
您还可以进行一些其他更改,这也会有所帮助,但我没有重点介绍
add_action()
:
使用动态获取主页IDget_option( \'page_on_front\' )
.
设置$item
到get_post()
ID的值似乎没有必要,因为您从未使用过它使用
setup_postdata()
对于每个部分,您可以使用模板标记,如
the_title()
和
the_content()
. 使用
setup_postdata()
也就是说,您可以将主页部分模板放入一个单独的文件中,并使用
get_template_part()
.考虑到所有这些因素
homepage_content()
函数如下所示:
function homepage_content() {
global $post;
$child_pages = get_pages( array(
\'child_of\' => get_option( \'page_on_front\' ),
) );
foreach ( $child_pages as $post ) {
setup_postdata( $post );
get_template_part( \'partials/homepage-content\' );
}
wp_reset_postdata();
}
add_action( \'homepage\', \'homepage_content\' );
然后创建
partials/homepage-content.php
作为每个部分的模板。自从
setup_postdata()
您可以使用适当的模板标记:
<article id="post-<?php the_ID(); ?>" <?php post_class( \'homepage-content\' ); ?>>
<h1><?php the_title(); ?></h1>
<?php the_content(); ?>
</article>