创建网站后添加管理员通知

时间:2019-02-15 17:29:52

标签: wordpress multisite wordpress-hook

我遇到了一个问题,在将站点添加到多站点安装中之后,我无法获得管理员通知。

在一堂课中,我迷上了wpmu_new_blog动作,以在新创建的网站上调用一些清理功能:

Site_Creation_Provider.php

class Site_Creation_Provider implements ServiceProviderInterface { 

    public function register( Container $container ) {
        $this->filters( $container )
    }

    private function filters( Container $container ) {
        add_action( 'wpmu_new_blog', function ( $blog_id, $user_id, $domain, $path, $site_id, $meta ) use ( $container ) {
            global $wpdb;

            $old_blog = $wpdb->blogid;
            switch_to_blog( $blog_id );

            $processes = new Processes();
            $processes->run();

            wp_cache_flush();

            switch_to_blog( $old_blog );
        }, 10, 6 );
    }

}

在Processes类中,我正在运行这些清理功能,然后使用Notices类尝试将适当的通知写入页面:

Processes.php

class Processes {

    public function run() {
        $this->activate_theme(); 

        /* More function calls */
    }

    private function activate_theme() {
        switch_theme( 'standard-theme' );
        new Notices( ['notice-success', 'is-dismissible'], 'Activated Standard Theme' );
    }

    /* More Functions */

}

Notices.php

class Notices {

    private $_classes;
    private $_message;

    public function __construct( $classes, $message ) {
        $this->_message = $message;
        if ( ! empty( $classes ) && is_array( $classes ) ) {
            $this->_classes = implode( ' ', $classes );
        }

        add_action( 'network_admin_notices', array( $this, 'render' ) );
    }

    public function render() {
        printf( "<div class='%s'>%s</div>", $this->_classes, $this->_message );
    }

}

一切正常,直到我尝试挂接到Notices构造函数中的network_admin_notices为止,但是render函数似乎从未被调用过。我的推测是,这可能与嵌套的add_actions有关,但是我一直很难找出答案。

有人对我在这里做错什么有什么想法,或者有更好的方法?

0 个答案:

没有答案