我使用“taxonomies”=>;在$args数组中为自定义帖子类型添加了标记;数组(“post\\u标记”)。Im在标签上使用以下代码。php循环来自某个标记的帖子。它工作得很好,但分页不会很好。当我尝试转到第2页时,它给了我一个404错误。如果我取出自定义查询,它将不会循环自定义帖子类型的帖子。我怎样才能修复它?
<?php
$term = get_queried_object();
$slugTerm = $term->slug;
$nameTerm = $term->name;
$paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
$query_args = array(
\'post_type\' => \'blog\',
\'paged\' => $paged,
\'tax_query\' => array(
array (
\'taxonomy\' => \'post_tag\',
\'field\' => \'name\',
\'terms\' => $nameTerm,
)
),
);
$query = new WP_Query( $query_args );
if($query -> have_posts()):while($query -> have_posts()):$query -> the_post();
?>
POST CONTENT
<?php endwhile; ?>
<div class="pagination">
<?php if(function_exists(\'wp_pagenavi\')) { wp_pagenavi(array( \'query\' => $query ) ); } ?>
</div>
<?php endif; ?>
最合适的回答,由SO网友:Jacob Peattie 整理而成
这可能不起作用的一个原因是您没有定义$nameTerm
因此,您可能甚至没有查询当前标记的正确帖子。
主要原因是这个标签。php不应该有自定义查询。WordPress中的主模板文件应使用The Loop 显示帖子。WordPress已经查询了正确的帖子。
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
POST CONTENT
<?php endwhile; ?>
<div class="pagination">
<?php if ( function_exists( \'wp_pagenavi\' ) ) { wp_pagenavi(); } ?>
</div>
<?php endif; ?>
这是我在这里看到的最常见的开发错误。如果你正在学习如何创建主题,那么遵循
the official documentation, 参考默认的二十个X主题(例如,二十二个一),并找到一个著名的教程。如果您直接跳到搜索;如何按标签查询帖子;,例如,不检查您是否需要对标记执行此操作。php模板,然后您将获得错误问题的解决方案。