我试图修正一些警告,我注意到我经常
PHP Notice: Undefined variable:
如果我使用:
$categories = get_the_category(get_query_var(\'cat\'));
$cat_name = $categories[0]->slug;
或/带有
$categories = get_category(get_query_var(\'cat\'));
$category_id = $categories->term_id;
$category_slug = $categories->slug;
$title_page = $categories->name;
我在循环或条件中使用它
例如:
$args1 = array(
\'no_found_rows\' => true,
\'update_post_meta_cache\' => false,
\'update_post_term_cache\' => false,
\'category__in\' => array($category_id),
\'posts_per_page\' => 2,
\'ignore_sticky_posts\' => true,
\'post_type\' => \'any\'
);
或/和
} else if (has_category($cat_name) && is_single() &&
!is_singular(\'my_post_type\')){
我总是会得到调试模式为真的那种警告
所以我开始着手解决这个问题,以找到某种解决方案,我注意到我真的不太明白get_the_category();
和get_category();
然后我试着:
$cat0 = get_category( get_query_var(\'cat\'));
if(isset($cat0)) {
$cat1 = get_category(get_query_var(\'cat\'));
$category_id = $cat1->term_id;
$category_slug = $cat1->slug;
$title_page = $cat1->name;
}
或/和
$cat4 = get_the_category(get_query_var(\'cat\'));
if(!isset($cat4)){
$categories = get_the_category(get_query_var(\'cat\'));
$cat_name = $categories[0]->slug;
}
if(isset($cat4) && is_single()){
$categories = get_the_category(get_query_var(\'cat\'));
$cat_name = $categories[0]->slug;
}
但如果
get_category
或
get_the_category
在里面
==
NULL
我会再来一次PHP Notice: Undefined variable: cat_name
我错过了什么?
SO网友:Jacob Peattie
所以这里有两件事。首先get_the_category()
不接受类别ID作为参数。它接受一个post ID,可以从中获取类别。
根据您需要使用的代码判断get_category()
:
$category = get_category( get_query_var(\'cat\') );
另一个问题是,您似乎正在使用
$cat_name
没有检查你是否真的有一个类别。
例如:
$category = get_category( $nonexistant_cat_id );
if ($category) {
$cat_name = $category->slug;
}
echo $cat_name; // Will be an undefined variable;
在那个例子中
$cat_name
没有设置,因为
get_category()
未返回类别。所以你只能使用
$cat_name
如果
get_category()
返回了一个类别:
$category = get_the_category( $nonexistant_cat_id );
if ($category) {
$cat_name = $category->slug;
echo $cat_name; // No longer undefined variable;
}
或者在您的示例中,只需检查
$cat_name
在使用前的条件下设置
$cat_name
:
} else if (isset($cat_name) && has_category($cat_name) && is_single() &&
!is_singular(\'my_post_type\')){
将其描述为“不必要”修复的错误是不正确的。您的代码中有几个问题需要解决。