Добавить уведомление администратора после создания сайта - PullRequest
0 голосов
/ 15 февраля 2019

Я столкнулся с проблемой, из-за которой я не могу получить уведомление администратора после добавления сайта в многосайтовую установку.

В одном классе я подключаюсь к действию 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 );
    }

}

Все работает нормально, пока я не попытаюсь подключиться к network_admin_notices в конструкторе Notices, но функция рендеринга никогда не вызывается.Я предполагаю, что это может быть связано с вложенным add_actions, но я с трудом пытался это выяснить.

У кого-нибудь есть какие-либо идеи относительно того, что я здесь делаю неправильно,или лучший подход?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...