首页 文章

显示(Wordpress)包含 Headers ,缩略图和摘录的子页面

提问于
浏览
0

对于一个问题提前道歉,对于专家来说,我毫无疑问是相对明显的 . 我已经查看了WordPress Codex中的相应信息(the_post_thumbnail,the_excerpt等),但我还是不太熟悉.php还没有正确实现它 . 还在学习!

我试图在标准(WP)页面内显示子页面,包括其 Headers ,缩略图和摘录 . 我可以用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>

到目前为止,我可以按正确的顺序查看正确子页面的链接/ Headers ,但不能查看缩略图或摘录 . 显然,我没有正确地调用缩略图或摘录 . 有人可以纠正我吗?

我也尝试过这些行,由二十六个主题支持:

<a href="<?php echo get_permalink(); ?>"><?php twentysixteen_post_thumbnail(); ?></a>
            <?php the_excerpt(); ?>

任何帮助将非常感激!

1 回答

  • 0

    缩略图不显示,因为函数the_post_thumbnail_url();显示当前帖子的缩略图,参数是指定图像的大小,而不是帖子 .

    $post->the_excerpt 未必填写 . 如果您查看添加/编辑帖子屏幕,您会注意到两个文本字段,一个用于编辑帖子的内容,另一个用于摘录 . 摘录是可选的,因此函数 the_excerpt() 显示该字段的内容,但是当它为空时,它将显示 $post->the_content 的前X个字符 .

    关于你的第二次尝试:函数 the_excerpt()get_permalink()twentysixteen_post_thumbnail() don 't work because you don' t正确设置帖子 .

    最简单的方法是在代码中添加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; ?>
    

相关问题