WooCommerce 获取类别 slug - Undefined 属性 notice with a function
WooCommerce get category slug - Undefined property notice with a function
我使用此函数将 woocommerce 类别 ID 转换为类别 slug
function woocommerceCategorySlug($id){
$term = get_term( $id, 'product_cat' );
return $term->slug;
}
这是有效的,但问题是我收到通知
Notice: Undefined property: WP_Error::$slug
有没有办法避免这个通知?
解决这个问题的方法是使用 WordPress 原生函数 get_term_by()
并以这种方式在您的代码中转置它:
function woocommerceCategorySlug( $id ){
$term = get_term_by('id', $id, 'product_cat', 'ARRAY_A');
return $term['slug'];
}
参考:
get_term()
function could return a WP_Error 对象,如果找不到术语,这正是您引用的错误所报告的问题。
虽然@LoicTheAztec 提交的答案有效,但最直接的方法可能是加入一些 defensive programming。这里有几种方法:
选项 1
function woocommerceCategorySlug( $id )
{
$term = get_term( $id, 'product_cat' );
if( is_wp_error( $term ) || !is_object( $term ) || !property_exists( $term, 'slug' ) )
return null;
return $term->slug;
}
现在,如果 get_term()
return 是一个 WP_Error
对象,或者根本不是对象,或者预期的对象没有 'slug' 属性,然后 return 为空。否则,return 鼻涕虫。
选项 2
或者,您可以将 get_term()
函数 return 结果作为关联数组并稍微简化检查:
function woocommerceCategorySlug( $id )
{
$term = get_term( $id, 'product_cat', ARRAY_A );
return isset( $term['slug'] ) ? $term['slug'] : null;
}
在此版本中,isset()
有双重用途:查看 slug 是否存在于预期的数组中,或者如果 $term
一开始就不是数组,则静默失败。
我使用此函数将 woocommerce 类别 ID 转换为类别 slug
function woocommerceCategorySlug($id){
$term = get_term( $id, 'product_cat' );
return $term->slug;
}
这是有效的,但问题是我收到通知
Notice: Undefined property: WP_Error::$slug
有没有办法避免这个通知?
解决这个问题的方法是使用 WordPress 原生函数 get_term_by()
并以这种方式在您的代码中转置它:
function woocommerceCategorySlug( $id ){
$term = get_term_by('id', $id, 'product_cat', 'ARRAY_A');
return $term['slug'];
}
参考:
get_term()
function could return a WP_Error 对象,如果找不到术语,这正是您引用的错误所报告的问题。
虽然@LoicTheAztec 提交的答案有效,但最直接的方法可能是加入一些 defensive programming。这里有几种方法:
选项 1
function woocommerceCategorySlug( $id )
{
$term = get_term( $id, 'product_cat' );
if( is_wp_error( $term ) || !is_object( $term ) || !property_exists( $term, 'slug' ) )
return null;
return $term->slug;
}
现在,如果 get_term()
return 是一个 WP_Error
对象,或者根本不是对象,或者预期的对象没有 'slug' 属性,然后 return 为空。否则,return 鼻涕虫。
选项 2
或者,您可以将 get_term()
函数 return 结果作为关联数组并稍微简化检查:
function woocommerceCategorySlug( $id )
{
$term = get_term( $id, 'product_cat', ARRAY_A );
return isset( $term['slug'] ) ? $term['slug'] : null;
}
在此版本中,isset()
有双重用途:查看 slug 是否存在于预期的数组中,或者如果 $term
一开始就不是数组,则静默失败。