好啊因此,代码的第一位更加正确,但仍然存在问题。一件一件。。。
$categories = get_the_category( $post_id );
$post_id
未在您发布的代码中设置。我假设该值是在页面前面的某个地方设置的,否则这就是您的第一个问题。
$nocats = get_terms(\'category\', array(\'exclude\' => $categories) );
The
exclude
参数将接受一个术语ID数组,但这不是
get_the_category()
返回。它返回一个对象数组。你不能按原样使用它。(顺便说一句,这也是你遇到麻烦的原因
$excats = implode(\',\', $categories);
. 您正在尝试将对象转换为字符串)。您需要提取ID:
$categories = wp_list_pluck($categories,\'term_id\');
然后:
$nocats = get_terms(\'category\', array(\'exclude\' => $categories) );
还有一个步骤:
get_terms()
默认情况下,将只返回已分配帖子的类别。如果确实要显示需要添加的所有类别
\'hide_empty\' => false
到您的参数列表:
$nocats = get_terms(
\'category\',
array(
\'exclude\' => $categories,
\'hide_empty\' => false
)
);
现在,您的代码应该可以工作了:
$categories = get_the_category( $post->ID );
// var_dump($categories);
$categories = wp_list_pluck($categories,\'term_id\');
// var_dump($categories);
$nocats = get_terms(
\'category\',
array(
\'exclude\' => $categories,
\'hide_empty\' => false
)
);
// var_dump($nocats);
foreach ( $nocats as $nocat ) {
echo $nocat->name;
echo ",";
}