提前为一个问题道歉,对于专家来说,我毫无疑问是相对明显的。我已经查看了WordPress Codex中的相应信息(the_post_thumbnail,the_excerpt等),但我还是不太熟悉.php还没有正确实现它。还在学习!
我试图在标准(WP)页面内显示子页面,包括其标题,缩略图和摘录。我可以通过以下方式让THUMBNAIL和EXCERPT完成所有工作:
<div class="child-pages">
<?php
$pageChild = get_pages( array( 'child_of' => $post->ID, 'sort_column' => 'menu_order', 'sort_order' => 'ASC' ) );
foreach( $pageChild as $page ) {
?>
<!-- loop: child page -->
<div class="child">
<header class="entry-header">
<a href="<?php echo get_page_link( $page->ID ); ?>"><?php echo '<h3>'.$page->post_title.'</h3>'; ?></a>
</header><!-- .entry-header -->
<img src="<?php echo the_post_thumbnail_url( $page->ID ); ?>">
<?php echo $page->the_excerpt; ?>
</div>
<?php } ?>
</div>
到目前为止,我可以按正确的顺序查看正确子页面的链接/标题,但不能查看缩略图或摘录。显然,我没有正确地调用缩略图或摘录。有人可以纠正我吗?
我也尝试过这些行,这是由二十六个主题支持的:
<a href="<?php echo get_permalink(); ?>"><?php twentysixteen_post_thumbnail(); ?></a>
<?php the_excerpt(); ?>
非常感谢任何帮助!
答案 0 :(得分:0)
缩略图不显示,因为函数the_post_thumbnail_url();
显示当前帖子的缩略图,参数是指定图片的大小,而不是帖子。
$post->the_excerpt
未必填写。如果您查看添加/编辑帖子屏幕,您会注意到两个文本字段,一个用于编辑帖子的内容,另一个用于摘录。摘录是可选的,因此函数the_excerpt()
显示该字段的内容,但当它为空时,它将显示$post->the_content
的前X个字符。
关于您的第二次尝试:功能the_excerpt()
,get_permalink()
和twentysixteen_post_thumbnail()
不起作用,因为您没有正确设置帖子。
最简单的方法是在代码中添加setup_postdata()
:
$pageChild = get_pages( array( 'child_of' => $post->ID, 'sort_column' => 'menu_order', 'sort_order' => 'ASC' ) );
foreach( $pageChild as $page ) {
setup_postdata( $page );
// now you can use all the fancy functions like `the_excerpt()`
// add your output here
}
或者您可以使用WP_Query
对象以推荐的方式执行此操作:
<?php
$args = array(
'post_parent' => $post->ID,
'orderby' => 'menu_order',
'order' => 'ASC'
);
$the_query = new WP_Query( $args ); ?>
<?php if ( $the_query->have_posts() ) : ?>
<!-- pagination here -->
<!-- the loop -->
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php endwhile; ?>
<!-- end of the loop -->
<!-- pagination here -->
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>