1

尝试在过滤器挂钩中使用某些参数时收到警告。

警告:第 688 行 C:\WAMP\WWW\FRANK\WP-CONTENT\THEMES\TWENTYTHIRTEEN\FUNCTIONS.PHP 中的 UPDATE_SALE() 缺少参数 2

警告:第 688 行 C:\WAMP\WWW\FRANK\WP-CONTENT\THEMES\TWENTYTHIRTEEN\FUNCTIONS.PHP 中缺少 UPDATE_SALE() 的参数 3

这是我要连接的过滤器的签名

echo apply_filters(
            'woocommerce_sale_flash', 
            '<span class="onsale">'.__( 'Sale!', 'woocommerce' ).'</span>', 
            $post, 
            $product);

这是我的自定义过滤器操作

function update_sale( $content, $post, $product ) {
    $content = '<span class="onsale">'.__( '25% Off!', 'woocommerce' ).'</span>';
    return $content;
}
add_filter('woocommerce_sale_flash', 'update_sale');

当我在函数声明中包含附加参数 $post 和 $product 时,我会收到上面的警告。我认为 $post 和 $product 可以让我访问术语数据。

那么我在这里错过了什么?

谢谢

4

1 回答 1

1

WordPress add_filter 函数将调用您的 update_sale 函数,默认只有一个参数。 http://codex.wordpress.org/Function_Reference/add_filter 同样在这些函数中,通常更容易将 post 对象作为全局变量来获取。您可以对您的产品 var 执行相同的操作。但是,正如所介绍的那样,该函数甚至不使用这些变量,因此您可能会忽略它们。[编辑:OP声明,当调用函数中设置了第四个参数时,全局变量无需显式调用即可使用。]

你可以试试:

function update_sale($content = '', $post = NULL, $product = NULL){
  global $post;
  // now you can access the post object here if you need to.
  $content = '<span class="onsale">'.__( '25% Off!', 'woocommerce' ).'</span>';
  return $content;
}
add_filter('woocommerce_sale_flash', 'update_sale', 10, 3);

add_filter 的第四个参数告诉 WordPress 您的 update_sale 函数接受三个参数。

于 2013-11-13T21:58:28.953 回答