如何在类别页面的侧边栏中显示自定义 post 类型的供稿?

How to display a custom post type feed in the sidebar of a category page?

我有一个自定义 post 类型设置,在网站每个页面的侧边栏中,它设置为显示来自该自定义 post 类型的随机 post(名为“评论").

除了正常/标准/默认 post 类型的“post”的类别页面外,这在任何地方都适用,即使查询设置为仅使用自定义 post 输入“评论”,它仅从默认博客 posts.

中提取

我是否遗漏了什么以确保即使在类别页面上也能正常工作?

这是我正在使用的代码,它在非类别页面上运行良好,您可以看到它仅限于“评论”post 类型:

// the query
                    $review_query = new WP_Query( array (
                        'post_type' => 'reviews', // Display just this post type
                        'orderby'        => 'rand',
                        'posts_per_page' => 1,
                    )
                );

您可以创建简码,将其放入您想要的任何小部件区域。 类似于:

function wpb_rand_posts() { 
 
 
if ( $the_query->have_posts() ) {
 
$string .= '<ul>';
    while ( $the_query->have_posts() ) {
       //do stuff
    }
    $string .= '</ul>';
    /* Restore original Post Data */
    wp_reset_postdata();
} else {
 
$string .= 'no posts found';
}
 
return $string; 
} 
 
add_shortcode('wpb-random-posts','wpb_rand_posts');
add_filter('widget_text', 'do_shortcode'); 

好的,原来我添加到 functions.php 以确保在类别供稿中显示不同的自定义 post 类型的代码是干扰。

所以这是我用来做的原始代码片段:

    // Show notable cases in tag archives
function themeprefix_show_cpt_archives( $query ) {
 if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
 $query->set( 'post_type', array(
 'nav_menu_item', 'post', 'cases'
 ));
 return $query;
 }
}

然后我将其更改为:

// Show notable cases in tag archives
function themeprefix_show_cpt_archives( $query ) {
if( empty( $query->query_vars['suppress_filters'] ) && ( is_category() || is_tag() )   ) {
$query->set( 'post_type', array(
'nav_menu_item', 'post', 'cases'
));
return $query;
}
}

并在我的查询中添加了 suppress_filters' => true,这解决了我的问题。如果其他人遇到此问题,请查看您主题中的其他内容可能正在通过类似这样的函数或插件在更高级别修改查询,因为这是特定于我主题中代码的解决方案。