警告:sizeof():在产品页面上,参数必须是实现可计数的数组或对象

时间:2019-02-06 作者:Jonathan

我安装了WooCommerce WordPress主题。

我得到了一个公共用户可以看到的错误,所以我需要尽快修复它。

错误显示在所有产品页面上,以下是错误:

Warning: sizeof (): Parameter must be an array or an object that implements Countable
以下是相关代码:

global $product, $post, $smof_data;
$cat_count = sizeof(get_the_terms($post->ID, \'product_cat\'));
$tag_count = sizeof(get_the_terms($post->ID, \'product_tag\'));
错误来自上述代码的最后一行。

我可以检查一下get_the_terms($post->ID, \'product_tag\') 首先是数组,否则将其指定为空\'\' 或0。

但不确定这是否会影响其他代码。

如何在不影响任何其他相关代码的情况下解决此问题?

1 个回复
SO网友:Krzysiek Dróżdż

让我们看看get_the_terms Codex page. 我们可以在那里找到此函数可能返回:

(array | false | WP\\u Error)WP\\u Term对象数组成功,如果没有术语或post不存在,则为false,失败时为WP\\u Error。

因此,只有在一种情况下,当函数返回一个术语数组时,代码才能正常工作。

但它也可能返回WP_Error 如果发生任何错误,或false 如果给定的分类法中没有该帖子的术语。

所以是的,您应该始终在代码中包含正确的错误检查。可能是这样的:

global $product, $post, $smof_data;
$cats = get_the_terms($post->ID, \'product_cat\');
$cat_count = ( !empty( $cats ) && ! is_wp_error( $cats ) ) ? count($cats) : 0;
$tags = get_the_terms($post->ID, \'product_tag\');
$tag_count = ( !empty( $tags ) && ! is_wp_error( $tags ) ) ? count($tags) : 0;

相关推荐

扩展WooCommerce小部件类-WC_Widget_Product_Categories

我正在尝试扩展woocommerce类,该类用于在我自己的插件中创建产品类别小部件,该插件为woo commerce产品添加了一个称为“部门”的新分类法。当我扩展WP\\u小部件时,一切正常,我看到一个新的小部件,可以添加到外观->小部件中。然而,当我试图扩展WC\\u Widget或WC\\u Widget\\u Product\\u类别时,我根本看不到新的Widget,即使我没有收到任何php错误。以下是我所拥有的不起作用的东西://get the base classes if(!cl