【问题标题】:Get the first category assigned to a WordPress post but ignore certain categories获取分配给 WordPress 帖子的第一个类别,但忽略某些类别
【发布时间】:2020-01-10 11:15:10
【问题描述】:

我的 WordPress 项目有几个仅在内部使用的类别,我不希望在前端使用它们。当我想显示分配给帖子的第一个类别时,这会导致问题。

我要做的是使用get_the_category 循环遍历分配的类别,直到我到达一个不是UncategorisedEvent 的类别。我试过使用continuebreak 没有成功。

$categories = get_the_category();
if ( ! empty( $categories ) ) {
    foreach( $categories as $category ) :
        $category_name = $category->cat_name;
        if ( $category_name == 'Uncategorised' || $category_name == 'Event' ) continue;
        $category = esc_html( $category_name );
        break;
    endforeach;
}
echo $category;

我希望这会将 not UncategorisedEvent 的第一个类别名称显示为字符串,尽管结果不一致,它返回对象甚至不需要的名称。任何帮助将不胜感激。

更新

我最终使用了这个:

$categories = get_the_category();
if( $categories ) {
    foreach( $categories as $category ) :
        $category_name = $category->cat_name;
        if ( $category_name == 'Uncategorised' || $category_name == 'Event' ) continue;
            $category = esc_html( $category_name );
            break;
    endforeach;
    if( ! is_string( $category ) ) {
        $category = null;
    }
}

但是,我很确定它可以以不那么冗长的方式完成,而且我也不确定如果两个排除类别都没有找到,则会出现非字符串结果。我仍然会感谢一些专家的意见。

【问题讨论】:

    标签: php wordpress foreach categories


    【解决方案1】:

    你没有正确打破 foreach 循环:

    $categories = get_the_category();
    if ( ! empty( $categories ) ) {
        $category_ok = '';
        foreach( $categories as $key => $category ) :
            $category_name = $category->cat_name;
            if ( $category_name !== 'Uncategorised' && $category_name !== 'Event' ) {
                $category_ok = esc_html( $category_name );
                break;
            }
        endforeach;
    }
    echo $category_ok;
    

    【讨论】:

    • 不幸的是,这对我不起作用,两个类别都没有被成功过滤掉。
    • 我修改了我的答案。您确定名称“未分类”和“事件”写得很好吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多