在我的插件中,我只想在前端当前页面使用我的插件短代码时加载css。
我所有的短代码都是扩展短代码类的类。Shortcode类帮助我自动化回调函数。
Shortcode abstract class
namespace PluginFoo\\Shortcodes;
abstract class Shortcode {
public $tag;
public $attrs;
public $function;
public function __construct($tag) {
$this->attrs = array();
$this->tag = $tag;
$this->function = static::className().\'::getCallBack\';
add_shortcode( $this->tag, $this->function );
}
abstract public static function className();
abstract public static function getCallBack( $attrs );
}
FooShortcode class
namespace PluginFoo\\Shortcodes;
class FooShortcode extends Shortcode {
public static function getCallBack( $attrs = null ){
add_action(\'wp_enqueue_scripts\', array( __CLASS__, \'set_bootstrap\' ) ); // <-- Here - function set_bootstrap not called !
$output = \'\';
ob_start();
//HTML Template
include_once \'shortcode-view.php\';
$output .= ob_get_contents();
ob_end_clean();
return $output;
}
public static function set_bootstrap() {
wp_enqueue_style( \'bootstrapstyle\', PLUGIN_DIR_URL . \'css/bootstrap.min.css\' );
}
public static function className(){
return __CLASS__;
}
}
如何在另一个静态函数中的add\\u action()中正确调用静态函数set\\u bootstrap()?
最合适的回答,由SO网友:David Lee 整理而成
如果类是静态调用的,则需要使用get_called_class()
像这样:
add_action(\'wp_enqueue_scripts\', array( get_called_class(), \'set_bootstrap\' ) );
自
$this
不可用。如果类被扩展,这也会起作用。