试图从静态函数调用"admin_notices“钩子。没有输出。当正常调用同一个钩子的时候。
use Awraq\Init;
use Awraq\Notice;
/**
* Initialize the activation works of the plugin.
*/
function awraq_activate_plugin()
{
/* NOT WORKING */
Notice::error('Activation failed');
/* WORKING */
//add_action('admin_notices', 'simplefunction');
}
register_activation_hook(__FILE__, 'awraq_activate_plugin');
function simplefunction()
{
echo '
Activation failed';
}类
namespace Awraq;
if (!defined('ABSPATH')) exit;
class Notice
{
private static $class = '';
private static $msg = '';
public static function error($msg = 'error', $is_dismissible = TRUE)
{
self::$class = ($is_dismissible == TRUE) ? 'notice notice-error is-dismissible' : 'notice notice-error';
self::$msg = __($msg, AWRAQ_TEXT_DOMAIN);
add_action('admin_notices', array(__CLASS__, 'awraq_notice'));
}
public static function warning($msg = 'warning', $is_dismissible = TRUE)
{
self::$class = ($is_dismissible == TRUE) ? 'notice notice-warning is-dismissible' : 'notice notice-warning';
self::$msg = __($msg, AWRAQ_TEXT_DOMAIN);
add_action('admin_notices', array(__CLASS__, 'awraq_notice'));
}
public static function success($msg = 'success', $is_dismissible = TRUE)
{
self::$class = ($is_dismissible == TRUE) ? 'notice notice-success is-dismissible' : 'notice notice-success';
self::$msg = __($msg, AWRAQ_TEXT_DOMAIN);
add_action('admin_notices', array(__CLASS__, 'awraq_notice'));
}
public static function info($msg = 'info', $is_dismissible = TRUE)
{
self::$class = ($is_dismissible == TRUE) ? 'notice notice-info is-dismissible' : 'notice notice-info';
self::$msg = __($msg, AWRAQ_TEXT_DOMAIN);
add_action('admin_notices', array(__CLASS__, 'awraq_notice'));
}
public static function awraq_notice()
{
$class = self::$class;
$msg = self::$msg;
if ($class == '' and $msg == '') {
return;
}
printf('%2$s', esc_attr($class), esc_html($msg));
}
}发布于 2022-01-06 07:39:40
通过做两件事解决了问题
/**
* Initialize the activation works of the plugin.
*/
function awraq_activate_plugin()
{
//removed
}
register_activation_hook(__FILE__, 'awraq_activate_plugin');添加了对"plugins_loaded“的调用
/**
* Initialize the plugin.
*/
function awraq_init_plugin()
{
if (Init::activate() != TRUE) {
deactivate_plugins(plugin_basename(__FILE__));
//added below
Notice::error('Plugin got Deactivated. Please check the dependencies.', true);
}
}
add_action('plugins_loaded', 'awraq_init_plugin');private static $globalScopeName = 'Awraq\Base\Notice';的D9,因为它将从外部调用。namespace Awraq\Base;
if (!defined('ABSPATH')) exit;
class Notice
{
private static $globalScopeName = 'Awraq\Base\Notice';
private static $class = '';
private static $msg = '';
public static function error($msg = 'error', $is_dismissible = TRUE)
{
self::$class = ($is_dismissible == TRUE) ? 'notice notice-error is-dismissible' : 'notice notice-error';
self::$msg = __($msg, AWRAQ_TEXT_DOMAIN);
add_action('admin_notices', array(self::$globalScopeName, 'awraq_notice'));
}
public static function warning($msg = 'warning', $is_dismissible = TRUE)
{
self::$class = ($is_dismissible == TRUE) ? 'notice notice-warning is-dismissible' : 'notice notice-warning';
self::$msg = __($msg, AWRAQ_TEXT_DOMAIN);
add_action('admin_notices', array(self::$globalScopeName, 'awraq_notice'));
}
public static function success($msg = 'success', $is_dismissible = TRUE)
{
self::$class = ($is_dismissible == TRUE) ? 'notice notice-success is-dismissible' : 'notice notice-success';
self::$msg = __($msg, AWRAQ_TEXT_DOMAIN);
add_action('admin_notices', array(self::$globalScopeName, 'awraq_notice'));
}
public static function info($msg = 'info', $is_dismissible = TRUE)
{
self::$class = ($is_dismissible == TRUE) ? 'notice notice-info is-dismissible' : 'notice notice-info';
self::$msg = __($msg, AWRAQ_TEXT_DOMAIN);
add_action('admin_notices', array(self::$globalScopeName, 'awraq_notice'));
}
public static function awraq_notice()
{
$class = self::$class;
$msg = self::$msg;
if ($class == '' and $msg == '') {
return;
}
printf('%2$s', esc_attr($class), esc_html($msg));
}
}https://wordpress.stackexchange.com/questions/400969
复制相似问题