尝试在过滤器钩子中使用某些参数时,我收到警告。
警告:在C:\ WAMP \ WWW \ FRANK \ WP-CONTENT \ THEMES \ TWENTYTHIRTEEN \ FUNCTIONS.PHP在线688上UPDATE_SALE()缺少论点2
警告:在C:\ WAMP \ WWW \ FRANK \ WP-CONTENT \ THEMES \ TWENTYTHIRTEEN \ FUNCTIONS.PHP ON LINE 688上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会让我访问术语数据。
那我在这里错过了什么?
感谢
答案 0 :(得分:1)
WordPress add_filter函数将使用默认的一个参数调用update_sale函数。 http://codex.wordpress.org/Function_Reference/add_filter同样在这些函数中,将post对象作为全局变量捕获通常更容易。您可以对产品var执行相同的操作。但是,如上所述,该函数甚至不使用这些变量,因此您可以省略它们。 [编辑:OP指出当在调用函数中设置第4个参数时,全局变量可用而不显式调用它们。]
你可以尝试:
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函数接受三个参数。