看到默认值的原因是,在应用过滤器后添加过滤器,这会导致使用默认值。在构建对象时应用过滤器,我假设之前admin_init
. 如果在之后admin_init
这也行不通,但那是因为admin_init
操作已启动。
这里有一种方法可以做到这一点(我不喜欢在构造函数中添加操作/过滤器,因此类的结构略有不同。
class compiler
{
public function generateCss(){
$css = apply_filters( \'dynamic_css\', \'.your_code{}\' );
$this->content = $css;
}
}
$compiler = new compiler();
add_action( \'admin_init\', [ $compiler, \'generateCss\' ], 11 );
class my_class
{
public function set_css(){
add_filter( \'dynamic_css\', [ $this, \'load_custom_css\' );
}
public function load_custom_css(){
return get_option( \'custom_css\' );
}
}
$my_class = new my_class();
add_action( \'admin_init\', [ $my_class, \'set_css\' ], 10 );