我正在使用ACF和CPT UI来添加我的项目。每个项目帖子都分配了一个自定义类别。
我使用下面的代码来显示存档页面中的所有项目…
<?php $loop = new WP_Query( array( 'post_type' => 'projets', 'paged' => $paged ) );
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="col-md-4 col-sm-6 p-4">
<div class="box">
<a href="<?php the_permalink(); ?>"><h3> <?php the_title(); ?></h3></a>
</div>
</div>
<?php endwhile;
if ( $loop->max_num_pages > 1 ) : ?>
<div id="nav-below" class="navigation">
<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Previous', 'domain' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Next <span class="meta-nav">→</span>', 'domain' ) ); ?></div>
</div>
<?php endif;
endif;
wp_reset_postdata();?>
代码可以很好地从所有类别中获取所有帖子,但当我转到项目/category1时,它仍然显示所有项目。
如何修改此项以仅显示特定类别中的项目?
这是WP_Query 的一个很好的参考
https://developer.wordpress.org/reference/classes/wp_query/
这将只显示来自特定类别的帖子
将"my_category_slug"替换为您感兴趣的类别。
<?php $loop = new WP_Query(
array(
'post_type' => 'projets',
'paged' => $paged,
'category_name' => 'my_category_slug'
));
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="col-md-4 col-sm-6 p-4">
<div class="box">
<a href="<?php the_permalink(); ?>"><h3> <?php the_title(); ?></h3></a>
</div>
</div>
<?php endwhile;
if ( $loop->max_num_pages > 1 ) : ?>
<div id="nav-below" class="navigation">
<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Previous', 'domain' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Next <span class="meta-nav">→</span>', 'domain' ) ); ?></div>
</div>
<?php endif;
endif;
wp_reset_postdata();?>
尽管这通常不是必需的,但你在创建新的帖子类型后刷新了你的永久链接。即,转到设置永久链接,然后单击保存。
标准循环应该适用于自定义帖子类型。
''
<?php if(have_posts()): ?>
<?php while(have_posts()): the_post() ?>
<h1><?php the_title(); ?></h1>
<div><?php the_content(); ?></div>
<?php endwhile; ?>
<?php endif; ?>
''
这将是显示内容的标准页面布局,然后使用导航到自定义帖子类型http://yoursite.com/projets/
尽管上面的循环应该已经包含在你的主题中了,所以除非从头开始构建主题,否则你很少需要重写它。
您是否尝试过没有任何自定义WP_Query的WP默认循环,即
<?php if ( have_posts() ) : ?>
because WP automatically determines which category projects post you're trying to view and show the projects post accordingly.
Right now you're mentioning the "'post_type' => 'projets'" so due to that it's showing all the projects.
so please use WP default loop then view the category i.e.
sitename.com/CPT_taxonomy/category_name
then it'll only show the project related to that category only.