我遇到了一个问题,在将站点添加到多站点安装中之后,我无法获得管理员通知。
在一堂课中,我迷上了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
有关,但是我一直很难找出答案。
有人对我在这里做错什么有什么想法,或者有更好的方法?