Я создал собственный плагин. То, что я пытаюсь сделать, - это поместить в класс "Hooks" методы создания для add_actions с параметром обратного вызова.
Причина, по которой я это делаю, заключается в том, чтобы легко вызывать WP-хук и хранить все WP-хуки в одном файл и не повторять add_actions в коде.
Как я могу сделать это правильно? Теперь admin_notice не отображается.
namespace Classes;
if( ! defined ('ABSPATH')){ die;} // when user try to direct access the file
class Hooks
{
private $_notice;
private $_wploaded;
private $_init;
private $_Class;
//admin_notices Prints admin screen notices.
public function admin_notices($Class,$call){
$this->_notice = $call;
$this->_Class = $Class;
add_action( 'admin_notices', array( $this->_Class, $this->_notice ) );
}
//wp_loaded After WordPress is fully loaded
protected function wp_loaded($call){
$this->_wploaded = $call;
add_action( 'wp_loaded', array( $this, $this->_wploaded ) );
}
//init
protected function init($call){
$this->_init = $call;
add_action( 'init', array( $this, $this->_init ) );
}
}
Затем другой класс
namespace Classes;
if( ! defined ('ABSPATH')){ die;} // when user try to direct access the file
class Core
{
public $TypeNotice;
public $message;
// get Message
public function set_Message( $message ){
$this->message = $message;
}
// show admin notice based on get Message method
public function show_Message($TypeNotice){
$this->TypeNotice = $TypeNotice;
$Hooks = new Classes\Hooks();
switch ($this->TypeNotice) {
case 'Error':
return $Hooks->admin_notices("Classes\Core","show_Message") . '<div class="error notice is-dismissable"><p>'.$this->message.'</p></div>';
break;
default:
return $Hooks->admin_notices("Classes\Core","show_Message") . '<div class="notice notice-success is-dismissible"><p>'.$this->message.'</p></div>';
break;
}
}
}
$plugin = new Classes\Core();
$plugin->set_Message("Hi");
$plugin->show_Message("Error");