为什么所有自定义帖子类型都显示在“最近帖子”小部件中?

乔迪

我想在最近的帖子小部件中显示自定义帖子类型的帖子。我正在使用一个名为“高级最近发布的窗口小部件”的窗口小部件来执行此操作。它适用于除首页以外的所有页面。在主页上,它显示了最近的帖子窗口小部件中的所有自定义帖子类型的帖子。

我将使用此代码在首页上显示所有自定义帖子类型的帖子。

add_action('pre_get_posts', function(WP_Query $query){
    if(is_admin() or is_preview()){
        return;
    }
    // Only add them to the loop on Home/Front-Page
    if((is_home() or is_front_page()) and empty($query->query_vars['suppress_filters'])){
        // This has to be an array so fix it if required
        $post_types = $query->get('post_type');
        if(empty($post_types)) $post_types = array('post');
        elseif(is_string($post_types)) $post_types = array($post_types);
        // Add one or more CPT-s to the loop here (merge old with new)
        $query->set('post_type', array_merge($post_types, array(
            'videos',
            'academic-articles',
            'news-events'
            // 'another_post_type',
            // 'maybe_another_post_type',
    )));
    }
    
    return;
});

我想在首页上显示所有自定义帖子类型的帖子,但是最近的帖子小部件中仅显示一种自定义帖子类型。它应该仅在最近的窗口小部件中显示测试,而不在其他帖子中显示。

在此处输入图片说明

我试图更改显示主页上所有帖子的代码,但没有成功。

蓬松的小猫

您正在使用更改查询,pre_get_posts以包括主页上的所有帖子类型,但实际上是在更改主页上的所有所有查询。

在您的函数中,您正在检查is_home() or is_front_page()以确保它仅在主页上运行。您只需要在此处添加一个条件即可检查它是否也是主查询,以免影响小部件中的查询。您可以使用进行此操作$query->is_main_query()

因此,您if现在将如下所示:

if( (is_home() or is_front_page()) 
    and $query->is_main_query()  /* <- ADD THIS so it only runs on the main query */
    and empty($query->query_vars['suppress_filters'])){

   /* it's the main query on the homepage so it's ok change the post types... */
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

WP_Query以在Wordpress中按类别显示帖子(自定义帖子类型)

通过使用一个类别显示所有帖子和自定义帖子类型

自定义字段未显示在自定义帖子类型的帖子中

获取与WordPress中的自定义帖子类型相关联的所有用户

WordPress自定义帖子类型存档小部件,仅显示CPT

在分类存档页面上以自定义帖子类型显示所有帖子

列出所有自定义帖子类型的所有帖子标题,并包含组

在Wordpress Gutenberg自定义块中显示自定义帖子类型的列表

自定义帖子类型循环不会加载所有帖子

为什么我的自定义帖子类型不使用我的自定义模板?

从所有自定义帖子类型中删除_thumbnail_id

WordPress自定义metabox,在帖子,页面和所有自定义帖子类型上加载?

WordPress自定义帖子类型帖子未在管理员中显示

WordPress的自定义帖子类型帖子不显示

对于自定义帖子类型,以“单个”显示附件

在Wordpress中显示自定义帖子类型的内容

自定义帖子类型中的“ __(”

为什么我的自定义帖子类型没有显示在管理菜单中?

我的自定义metabox显示所有帖子类型或页面

WORDPRESS:使用自定义帖子类型显示自定义分类法中某个类别的帖子

如何将一种自定义帖子类型的所有帖子显示到另一种自定义帖子框中?

如何在wordpress中获取所有自定义帖子类型?

如何从两种自定义帖子类型中获取所有帖子?

自定义帖子类型分类页面仍显示所有帖子

自定义帖子类型仅显示最近的帖子

如何在自定义帖子类型小部件插件的最后添加更多按钮

在模板中显示自定义帖子类型中的自定义字段

显示自定义帖子类型的分类法

为什么我的自定义帖子类型仅针对我的自定义用户角色显示?