试图在我的存档页面中显示所有帖子,但它只返回页面内容

Posted

技术标签:

【中文标题】试图在我的存档页面中显示所有帖子,但它只返回页面内容【英文标题】:Trying to display all posts in my archive page but it is only returning the page content 【发布时间】:2017-06-13 18:39:38 【问题描述】:

我在使用 have_posts 循环在我的存档页面中显示所有帖子时遇到问题。当我尝试返回标题和内容时,它会返回模板页面的标题和内容,而不是帖子的内容。

我尝试修复它的是我运行了一个 WP_Query 帖子循环,它抓取所有帖子类型 = post 的帖子,并且它显示的内容很好。唯一的问题是我想要一个动态存档页面,所以当用户选择一个标签时 - 它会将他们带到一个包含该标签的所有帖子的存档页面。由于我正在运行特定的 WP_Query,因此我的所有存档页面都显示所有帖子类型为 post-type = post。

我的猜测是我必须运行一个简单的 have_posts 循环而不是运行 WP_Query 才能使我的存档页面动态化。

我如何设置我的存档页面:我有一个名为 archive.php 的文件,我将模板名称命名为 Archives,并在 wp-admin 上为其创建了一个页面并将其命名为 Blog。

<?php
/**
 * The template for displaying archive pages
 * Template Name: Archives
 * @link https://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Seventeen
 * @since 1.0
 * @version 1.0
 */

get_header(); ?>

  <div class="d-flex flex-wrap archive-wrap">

   <div class="content-area">
    <main id="main" class="site-main d-flex justify-content-center flex-wrap" role="main">

    <?php // Show the selected frontpage content.
    if ( have_posts() ) :
        while ( have_posts() ) : the_post(); ?>

        <div class="archive-header col-10 d-flex justify-content-center align-items-center flex-column">
            <?php
                the_title( '<h1 class="archive-title">', '</h1>' );
                the_content( '<h1 class="archive-title">', '</h1>'); 
            ?>

        </div><!-- .page-header -->

    <?php

        get_template_part( 'template-parts/post/content', 'archive' );

        endwhile;

        the_posts_pagination( array(
            'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Previous page', 'twentyseventeen' ) . '</span>',
            'next_text' => '<span class="screen-reader-text">' . __( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ),
            'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyseventeen' ) . ' </span>',
        ) );

    endif; ?>

    <div class="col-10 col-md-3 offset-lg-1 sidebar-4-container">
        <?php dynamic_sidebar( 'sidebar-4' ); ?>
    </div>


    </main><!-- #main -->
</div><!-- #primary -->

</div><!-- .wrap -->

<?php get_footer();

在我的模板内容存档文件中,我有以下内容:

<?php 
 // the query
 $wpb_all_query = new WP_Query(array('post_type'=>'post', 
 'post_status'=>'publish', 'posts_per_page'=>-1)); ?>

<?php if ( $wpb_all_query->have_posts() ) : ?>


    <!-- the loop -->
    <?php while ( $wpb_all_query->have_posts() ) : $wpb_all_query->the_post(); ?>
    <div id="post-<?php the_ID(); ?>" class="col-12 article-container">
        <div class="article-image-div" style="background-image: url('<?php echo get_the_post_thumbnail_url( $post_id, 'large' );  ?> ');"></div>
        <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>      
        <h5>by <?php echo get_the_author(); ?></h5>
        <?php echo apply_filters( 'the_content', wp_trim_words( strip_tags( $post->post_content ), 55 ) ); ?>

        <hr align="left">   
    </div>


    <?php endwhile; ?>
    <!-- end of the loop -->


    <?php wp_reset_postdata(); ?>

<?php else : ?>
    <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

【问题讨论】:

【参考方案1】:

尝试使用 Query_posts 或 get_posts 代替 https://developer.wordpress.org/reference/functions/get_posts/ https://developer.wordpress.org/reference/functions/query_posts/

【讨论】:

以上是关于试图在我的存档页面中显示所有帖子,但它只返回页面内容的主要内容,如果未能解决你的问题,请参考以下文章

控制 wordpress 存档页面上的帖子数量

WordPress中的自定义博客存档页面

在 Wordpress Datewise 中为特定类别创建存档

如何为自定义帖子类型存档页面创建导航

链接到显示所有帖子的存档页面

Wordpress - 自定义帖子类型存档页面