2012-05-10 50 views
3

我正在使用WP v3.3.1,並且正在嘗試製作一個插件。我已經完成了半工作。它啓動,add_action起作用,但由於某種原因,我的過濾器不會被觸發。當我搜索時,我看到我應該這樣做,但它不起作用。我也嘗試在課堂之外包括它,但也沒有效果。錯誤日誌是從構造函數寫入的,但不是xmlAddMethod。我在單個文件中測試了xmlrpc調用,並且它可以工作,但在創建類時遇到了問題。WP插件:在類中使用add_filter

//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; 
    } 

回答

7

更改此:

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

要:

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

您也可以使用PHP的魔術__CLASS__不變。

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