Word get_the_category()
文件中的archive.php
显示类别slug网址时返回两个类别的数组,一个不同,与“aktuality-blog'类别我使用slug。
以下是var_dump( get_the_category() );
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' s $ arg来解决。
我不想要解决方法,但是可靠的解决方案,如果它们是软件创建的,也可以在不同的类别上工作,只是正常存档,我可以使用类别slug,我可以简单地浏览本地分页等等在,我不会解决整个cms的问题。
答案 0 :(得分:1)
因此,在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>';
}
}
}
?>