史蒂夫,你问了几个问题,我看了一下,我得出结论,你的循环导致了你所有的头痛。
显示所有帖子的循环是:
$args = array( \'post_type\' => \'design_asset\', \'posts_per_page\' => 100, \'orderby\' => \'title\', \'order\' => \'ASC\' );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
任何存档页上的自定义循环都会产生问题。这些页面上的主查询非常具体,这些查询是在自定义查询中复制的shlep。要了解主查询是如何工作的,以及主查询如何决定在何处显示内容,请转到并检查
my answer on this question我建议您不要在任何存档页面甚至主页上对主循环使用任何自定义查询。
我的建议是将所有模板中的所有循环更改回默认循环
if ( have_posts() ) :
while ( have_posts() ) : the_post();
<----LOOP ELEMENTS---->
endwhile;
endif;
在您更改回默认循环后,您将看到所有内容都将正常工作,但您的自定义帖子类型将不包括在主循环中。
要更正此问题,请使用pre_get_posts
将自定义帖子类型和其他修改添加到主查询
function include_cpt( $query ) {
if ( !is_admin() && $query->is_main_query() ) {
$query->set( \'post_type\', \'design_asset\' );
$query->set( \'posts_per_page\', \'100\' );
$query->set( \'orderby\', \'title\' );
$query->set( \'order\', \'ASC\' );
}
}
add_action( \'pre_get_posts\', \'include_cpt\' );
这应该使一切正常工作,并如预期的那样