解决这个问题的最佳方法是简化代码。马上ScriptQueuer::QueueCss()
只是一个静态方法,获取数据太晚了。
您可以使用一个不可变对象,然后将其方法之一注册为回调。
示例:
class Enqueuer {
private $stylesheets;
public function __construct( ArrayObject $stylesheets ) {
$this->stylesheets = $stylesheets;
}
public function enqueue() {
foreach ( $this->stylesheets as $stylesheet )
wp_enqueue_script(
$stylesheet->handle(),
$stylesheet->url(),
$stylesheet->dependencies(),
$stylesheet->version(),
$stylesheet->in_footer()
);
}
}
add_action( \'wp_enqueue_scripts\', [
new Enqueuer( $settings->GetCss() ),
\'enqueue\'
] );
无需向enqueue方法传递数据,无需闭包,代码易于阅读。