2015-02-08 89 views
0

這可能是因爲過濾器發射太晚而無法正常工作,但這是我所擁有的,並且它不工作。__construct中的WordPress add_filter('body_class')不起作用

class someClass() 
{ 
    public function __construct() 
    { 
     add_filter('body_class', array('someClass', 'body_class_filter')); 
    } 

    public function body_class_filter($classes) 
    { 
     $classes[] = 'some-class'; 
     return $classes; 
    } 
} 

我也曾嘗試

add_filter('body_class', array($this, 'body_class_filter')); 

add_filter('body_class', array(&$this, 'body_class_filter')); 

add_filter('body_class', array(__CLASS__, 'body_class_filter')); 

但該過濾器不會出現被解僱。我甚至在函數body_class_filter()中放入了一個trigger_warning()函數,以查看代碼是否處理完畢,並且它看起來不是因爲debug.log中沒有顯示警告。

想法?

回答

0

你是否正在實例化類?在您的文件底部添加new someClass();。在運行body_class過濾器之前

add_filter('body_class', array($this, 'body_class_filter')); 

最後,如果你實例化類,你這樣做:我的建議是去與add_filter()以下的版本?

+0

是的類正在被實例化,當頁面模板被調用的時候它就被實例化了,這很可能是我猜測,在body類過濾器運行之後完成的。我所能想象的就是這個問題。 – atomicadam 2015-02-09 06:01:27