首页 文章

Wordpress:应用过滤器时回调函数出错

提问于
浏览
1

我试图在过滤器钩子中使用一些参数时收到警告 .

警告:在C:\ WAMP \ WWW \ FRANK \ WP-CONTENT \ THEMES \ TWENTYTHIRTEEN \ FUNCTIONS.PHP ON LINE 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会让我访问术语数据 .

那我在这里错过了什么?

谢谢

1 回答

  • 1

    WordPress add_filter函数将调用您的update_sale函数,默认只有一个参数 . http://codex.wordpress.org/Function_Reference/add_filter同样在这些函数中,它甚至可以使用这些变量,因此您可以省略它们 . [编辑: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函数接受三个参数 .

相关问题