如何在wp插件开发中自我初始化类?

时间:2018-10-12 08:11:26

标签: php wordpress plugins init

下面是WP插件的示例代码。我想在类中包含带函数的styleheet。但是我的'init'钩子不会运行init函数。

true

2 个答案:

答案 0 :(得分:1)

如果我以前有调试模式,那么..我最早可能会看到错误$this is undefined。我本想使用类名而不是$ this。我不能使用$ this是class的原因尚未初始化,而$ this是class的实例。因此$ this可以在当时已经完成的其他类coz初始化方法中很好地工作。

class RentProduct{

public static function init() {

    // load_plugin_textdomain( 'lang', false, dirname( plugin_basename( __FILE__ ) ) . '/lang' );

    add_action( 'wp_enqueue_scripts', array( 'RentProduct' , 'register_plugin_styles' ) );

    // add_filter( 'the_content', array( $this, 'append_post_notification' ) );
}


public static function register_plugin_styles() {
    wp_register_style( 'main', plugins_url( 'wc-rent-products/assets/css/main.css' ) );
    wp_enqueue_style( 'main' );
}
}

add_action( 'init', array( 'RentProduct', 'init' ));

答案 1 :(得分:0)

// create new instance from your class
$rentProduct = new RentProduct();

class RentProduct {
    // __construct will be called, if you call the class
    public function __construct() {
        add_action( 'wp_enqueue_scripts', array( $this, 'register_plugin_styles' ) );
        load_plugin_textdomain( 'eg', false, dirname( plugin_basename( __FILE__ ) ) . '/lang' );
    }


    public function register_plugin_styles() {
        wp_register_style( 'style', plugins_url( 'eg/assets/css/style.css' ) );
        wp_enqueue_style( 'style' );
    }
}