自定义帖子类型的帖子不会显示在存档窗口小部件中

时间:2014-07-15 作者:Desi

我有一个名为“播客”的自定义帖子类型,但没有一篇帖子显示在存档小部件中。仅显示主查询(博客帖子)。

我尝试在下面添加此代码以包含播客帖子,但这只允许它们显示在存档模板中,这很好,但还不完全存在。

/* Show Podcasts posts in archive */
add_filter(\'pre_get_posts\', \'query_post_type\');
function query_post_type($query) {
  if(is_category() || is_tag()) {
    $post_type = get_query_var(\'post_type\');
    if($post_type)
        $post_type = $post_type;
    else
        $post_type = array(\'nav_menu_item\',\'post\',\'podcasts\');
    $query->set(\'post_type\',$post_type);
    return $query;
    }
}
如何让播客帖子显示在存档小部件中?

编辑:为清楚起见,我指的是当我单击本机存档小部件中的下拉列表时。应该有播客帖子的日子/月份甚至没有出现。仅显示博客帖子的日期/月份。

编辑2:我试着把这个放到functions.php 现在显示了包含播客帖子的月份,但当我点击这些月份时,它只会引导我找到404 WordPress模板。然而,当我单击包含主查询中帖子的月份时,我会看到archive 列出这些帖子的模板。

add_filter( \'getarchives_where\', \'custom_getarchives_where\' );
function custom_getarchives_where( $where ){
    $where = str_replace( "post_type = \'post\'", "post_type IN ( \'post\', \'podcasts\' )", $where );
    return $clauses;
}

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

为了便于解释,下面是如何解决这个问题。

默认情况下,wordpress在主查询中不包含自定义帖子类型,这就是为什么only 从帖子类型获取帖子post 在存档页中。此外,默认情况下,小部件也不包括自定义帖子类型。

@birgire 如中所述the post I flagged as duplicate

存档小部件正在使用wp_get_archives() 显示存档。

如果您想针对所有wp_get_archives() 函数,您可以使用getarchives_where 用于添加自定义帖子类型的筛选器:

add_filter( \'getarchives_where\', function ( $where )
{
    $where = str_replace( "post_type = \'post\'", "post_type IN ( \'post\', \'podcasts\' )", $where );
    return $where;
});
这应该可以在存档小部件中显示自定义帖子类型的帖子,但如果您转到特定的存档,这些帖子仍然不会显示,并且会给您一个404错误,因为您仍然必须在存档页面(archive.php)中包含自定义帖子类型

要实现这一点,可以使用pre_get_posts 在运行主查询之前,将这些自定义帖子类型添加到主查询中的操作。要专门针对归档页,可以使用is_archive() 与函数结合的条件标记

add_action( \'pre_get_posts\', function ( $query ) 
{
  if (    !is_admin() 
       && $query->is_main_query() 
       && $query->is_archive()
   )
     $query->set( \'post_type\', array( \'post\', \'podcasts\' ) );
});

结束

相关推荐

如何停止加载多个jQuery副本

我的wordpress标题。php和函数。php如下所示。请帮助我修改php代码,以停止由于多次加载jquery而导致的问题。我的插件和主题正在多次加载jquery。我的文件Header.php Function.php 所有专家都告诉我需要加入排队脚本!!!我阅读了与之相关的不同文件。我对编码是新手,我不知道在哪里添加这个排队脚本,我需要添加什么类型的代码?