试图在我的存档页面中显示所有帖子,但它只返回页面内容
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/
【讨论】:
以上是关于试图在我的存档页面中显示所有帖子,但它只返回页面内容的主要内容,如果未能解决你的问题,请参考以下文章