WP插件:在类中使用add_filter

时间:2012-05-10 14:48:03

标签: wordpress-plugin wordpress

我正在使用WP v3.3.1,我正在尝试制作一个插件。我已经半工作了。它启动了,add_action工作,但由于某些原因我的过滤器没有被触发。当我用Google搜索时,我看到我本应该这样做,但它不起作用。我也尝试将它包括在课外,这也没有用。错误日志是从构造函数写入的,而不是xmlAddMethod。我在单个文件中测试了xmlrpc调用,但是它有效,但是在编写类时遇到了问题。

//DOESN'T WORK HERE
add_filter( 'xmlrpc_methods', array( &$this, 'xmlAddMethod') );

class TargetDomain extends Domain 
{
    public function __construct() 
    {        
        error_log('TARGET: __construct');
        //DOESN'T WORK HERE EITHER
        add_filter( 'xmlrpc_methods', array( &$this, 'xmlAddMethod') );
        parent::__construct();
    }

    function xmlAddMethod( $methods ) 
    {
        error_log('TARGET: xml_add_method');
        $methods['myBlog.publishPost'] = 'publishMyPost';
        return $methods;
    }

2 个答案:

答案 0 :(得分:7)

改变这个:

add_filter( 'xmlrpc_methods', array( &$this, 'xmlAddMethod') );

要:

add_filter( 'xmlrpc_methods', array( 'TargetDomain', 'xmlAddMethod') );

答案 1 :(得分:3)

你也可以使用php的魔法 __ CLASS __ 常量。

add_filter( 'xmlrpc_methods', array( __CLASS__, 'xmlAddMethod') );