php - Functions.php 中的自定义函数缺少参数

标签 php mysql wordpress hook-woocommerce

这与使用 Woocommerce 的 Wordpress 网站相关。 我的服务器错误日志记录了访问特定页面的每个 IP 的此错误:

Error: PHP Warning: Missing argument 2 for elixa_woo_hide_in_loop() in "filepath"/functions.php on line 239

代码如下:

/*Within functions.php*/

add_filter( 'woocommerce_product_is_visible', 'elixa_woo_hide_in_loop', 2 );

function elixa_woo_hide_in_loop( $visible, $id ) {
echo "$id outside of if";
if ( $visible && get_field ( '_elixa_hide_cat', $id ) ) {
    echo "$id in if";
    return false;
    }
return $visible;
}

/*Within website, displayed above each product*/

Warning: Missing argument 2 for elixa_woo_hide_in_loop() in "filepath"/functions.php on line 239

outside of if

这是上面引用的钩子(Hook):

http://woocommerce.wp-a2z.org/oik_hook/woocommerce_product_is_visible/

上面的代码会影响 Woocommerce“浏览所有产品”页面,其中taxonomy-product_cat.php 按类别显示所有产品。

此代码是由我之前的开发人员自定义编写的,不是 Wordpress 或 Woocommerce 框架的一部分。

我一生都无法理解这对于循环应该做什么。奇怪的是,当我删除 add_filter 时,它对产品显示的影响为零,并且错误消失了。

当对所有这些查询进行测试 $id = NULL 或 0 时,我找不到这个通用变量最初声明的位置:

打印 gettype($id);
打印 get_object_vars($id);
打印 is_array($id);
打印 is_object($id);
print_r($id);
打印计数($id);
打印 get_class($id);
打印 isset($id);
打印 get_parent_class($id);
打印 gettype($id->container);

只是想联系社区,看看他们是否看到过类似的情况。这是 sanitizer 功能吗?它有什么作用?

最佳答案

您在注册过滤器时出错。第三个参数是优先级,而不是参数数量。请参阅https://developer.wordpress.org/reference/functions/add_filter/

将代码更改为:

add_filter( 'woocommerce_product_is_visible', 'elixa_woo_hide_in_loop', 10, 2 );

关于php - Functions.php 中的自定义函数缺少参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42964307/

相关文章:

php - 如何防止刷新页面时更新mysql字段+1

css - 如何仅使用 CSS 创建响应式设计

MySQL:计算今天添加的记录的最有效方法

mysql - 检查表中是否存在用户 ID,然后更新,否则插入 mysql 版本 5.7.15

php - 在 Php session 中存储从数据库检索的信息

html - 恢复 Wordpress 样式表

php - 传递要由外部 .js 文件写入的复杂 PHP 变量

php - 为什么我在 Laravel 中的简单属于关系不起作用?

php - 如何将文件从一个位置移动到另一个位置?

javascript - 如何使用 php 通过 AJAX 以及单击链接时从数据库中删除记录