当前位置: 首页 > 知识库问答 >
问题:

WordPressget_the_category()正在返回我不想要的东西

左丘成天
2023-03-14

Wordpress的存档中获取类别()。php文件在显示类别slug url时返回两个类别的数组,一个不同,与我使用slug的“aktuality博客”类别无关。

这里是var_dump(获取_类别())

array(2) {
  [0]=>
  object(WP_Term)#4190 (16) {
    ["term_id"]=>
    int(2)
    ["name"]=>
    string(9) "Aktuality"
    ["slug"]=>
    string(9) "aktuality"
    ["term_group"]=>
    int(0)
    ["term_taxonomy_id"]=>
    int(2)
    ["taxonomy"]=>
    string(8) "category"
    ["description"]=>
    string(0) ""
    ["parent"]=>
    int(0)
    ["count"]=>
    int(18)
    ["filter"]=>
    string(3) "raw"
    ["cat_ID"]=>
    int(2)
    ["category_count"]=>
    int(18)
    ["category_description"]=>
    string(0) ""
    ["cat_name"]=>
    string(9) "Aktuality"
    ["category_nicename"]=>
    string(9) "aktuality"
    ["category_parent"]=>
    int(0)
  }
  [1]=>
  object(WP_Term)#4188 (16) {
    ["term_id"]=>
    int(30)
    ["name"]=>
    string(4) "Blog"
    ["slug"]=>
    string(14) "aktuality-blog"
    ["term_group"]=>
    int(0)
    ["term_taxonomy_id"]=>
    int(30)
    ["taxonomy"]=>
    string(8) "category"
    ["description"]=>
    string(0) ""
    ["parent"]=>
    int(0)
    ["count"]=>
    int(1)
    ["filter"]=>
    string(3) "raw"
    ["cat_ID"]=>
    int(30)
    ["category_count"]=>
    int(1)
    ["category_description"]=>
    string(0) ""
    ["cat_name"]=>
    string(4) "Blog"
    ["category_nicename"]=>
    string(14) "aktuality-blog"
    ["category_parent"]=>
    int(0)
  }
}

我只希望数组1是数组0,而不是在那里。我可以通过插入数组[1]category int get_posts的$arg来解决这个问题。

我不需要解决方法,但需要解决方案,如果创建了不同的类别,也可以在不同的类别上工作,只是普通的归档,在类别slug上,我可以简单地浏览它,然后进行本地分页等等,而不是解决方法,我最终必须重写整个cms。


共有1个答案

戚兴思
2023-03-14

所以在Wordpress中,你可以有多个类别与给定的帖子相关联。

所以你所经历的是一种正常的行为,你只需为你想要的帖子选择一个类别就可以避免这种情况。

所以这里有一些你可以做的事情

从主帖子查询中排除类别。

function exclude_category( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'cat', '-1,-1347' );
    }
}
add_action( 'pre_get_posts', 'exclude_category' );

https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

循环浏览类别并为当前上下文选择重要类别

foreach(get_the_category() as $term){
    if($term->slug == 'aktuality'){ 
        // do something
    }
}

也许是这个?

安装Yoast插件以允许主要类别,或者使用独立于下面插件的分叉代码。

https://joshuawinn.com/using-yoasts-primary-category-in-wordpress-theme/

分叉代码(没有亲自测试)

<?php 
// SHOW YOAST PRIMARY CATEGORY, OR FIRST CATEGORY
$category = get_the_category();
$useCatLink = true;
// If post has a category assigned.
if ($category){
    $category_display = '';
    $category_link = '';
    if ( class_exists('WPSEO_Primary_Term') )
    {
        // Show the post's 'Primary' category, if this Yoast feature is available, & one is set
        $wpseo_primary_term = new WPSEO_Primary_Term( 'category', get_the_id() );
        $wpseo_primary_term = $wpseo_primary_term->get_primary_term();
        $term = get_term( $wpseo_primary_term );
        if (is_wp_error($term)) { 
            // Default to first category (not Yoast) if an error is returned
            $category_display = $category[0]->name;
            $category_link = get_category_link( $category[0]->term_id );
        } else { 
            // Yoast Primary category
            $category_display = $term->name;
            $category_link = get_category_link( $term->term_id );
        }
    } 
    else {
        // Default, display the first category in WP's list of assigned categories
        $category_display = $category[0]->name;
        $category_link = get_category_link( $category[0]->term_id );
    }
    // Display category
    if ( !empty($category_display) ){
        if ( $useCatLink == true && !empty($category_link) ){
        echo '<span class="post-category">';
        echo '<a href="'.$category_link.'">'.htmlspecialchars($category_display).'</a>';
        echo '</span>';
        } else {
        echo '<span class="post-category">'.htmlspecialchars($category_display).'</span>';
        }
    }

}
?>
 类似资料:
  • 我有一个项目,其中我创建了一个BankAccount超级类和一个SavingsAccount子类。一切都很好,但我在返回我特别想要的字符串时遇到了麻烦。 示例:(裁剪) 驱动程序类将对BankAccount使用toString方法,并打印以下内容: (这对于这个超类来说是完美的) 但是,下面是SavingsAccount子类 调用SavingsAccount的toString方法时,它会打印: S

  • Android Kotlin,<代码>api。openOrder返回类型为BaseResponse 我想要的代码是,如果配置文件。值不为null,API返回BaseResponse 但android studio提示,这种有趣的返回类型是任何,如何修复? 排除if-else用法,因为配置文件。值具有许多属性,并且具有配置文件。价值用户名,

  • 我用静态html为我的网站创建了一个移动应用程序,现在我想使用ajax来获取我的帖子、页面、标题、图像等..从我的wordpress原始网站。 为此,我认为最好的解决方案是使用JSON API插件- 我已经安装了,它在页面中运行良好,除了主页,它没有为我的移动应用程序发送正确的想法。 有人知道问题是什么吗?这是我的wordpress网站的问题还是插件问题? 它在发送这个: 如果你观察,它是返回一个

  • 我正在建立一个弹性搜索索引,并希望它的行为(返回结果)某种方式。我已经建立了父母/孩子的关系。 我已经用一些“父”文档和一堆父文档设置正确的“子”文档填充了它。 当我使用普通搜索查询搜索内容时,我当然会返回所有匹配的文档。父文档和子文档,但两者之间没有联系。如果我使用has_child筛选器搜索内容,它将正确地搜索子文档,并向我返回匹配的父文档: 问题是,我想搜索孩子,并在一个文档中找回父母和孩子

  • 我得到了这个错误:这个表达式的类型是'void',所以它的值不能被使用。尝试检查是否使用了正确的API;可能会有一个函数或调用返回您意想不到的void。还要检查类型参数和变量,它们也可能是空的。 代码: null null 我不明白这是什么。我是新手。这是我的第一个应用程序。有人能帮我一下吗。

  • 如果我有 我可以使用什么代码使其永久化?我还没有尝试过任何方法,我发现很难得到这个具体的信息。 谢谢