按自定义分类名称对自定义帖子进行分组

时间:2017-12-04 作者:Iurie

我尝试使用来自的解决方案显示按类别分组的自定义帖子列表here (第一个选项/示例)。我只对代码进行了一点修改,以满足我的需要,但我的安装/博客(如果没有评论,则会显示白色)会冻结,因为这行代码(在我看来):$term_ids = array_map(function($t) { return $t->term_id, }, $terms);. 我通过注释部分代码发现了这一点。它怎么了?

我的完整代码:

function yesterday_events2() {

    $terms = get_terms( \'event-categories\' );

    $term_ids = array_map( function( $t ) { return $t->term_id }, $terms );

    $posts = get_posts(
        array(
            \'nopaging\'  => true,
            \'tax_query\' => array(
                array(
                    \'taxonomy\' => \'event-categories\',
                    \'field\'    => \'id\',
                    \'terms\'    => $term_ids,
            ) ),
    ) );

    foreach( $terms as $t ) {
        $posts_in_term = array_filter( $posts, function( $p ) use ( $t ) {
            // has_term likely triggers a DB hit...
            return has_term( $t->term_id, \'event-categories\', $p );
        } );

        // do stuff with $posts_in_term 
    }

}

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

您应按以下方式编写:

$term_ids = array_map( function( $t ) { return $t->term_id ; }, $terms );

在代码中,还有get_terms 直接写入分类名称的位置。这已被弃用,取而代之的是:

$terms = get_terms( array(
    \'taxonomy\' => \'event-categories\',
    \'hide_empty\' => false,
) );
自4.5.0以来,应通过$args数组中的“taxonomy”参数传递分类法:

第二个问题是关于为什么你的帖子是空的:

默认情况下,您将在post\\u type=post的帖子中进行搜索。

您应该像这样搜索自定义的post\\u类型:

$posts = get_posts(
    array(
        \'post_type\' => \'custom_post_type\',
        \'nopaging\'  => true,
        \'tax_query\' => array(
            array(
                \'taxonomy\' => \'event-categories\',
                \'terms\'    => $term_ids ,
        ) ),
) );
我删除了\'field\' => \'id\'因为默认情况下term_id 可接受值为:

术语分类id

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post