したがって、次のような場合があります。
admin_notices
の中に名前を表示する必要があります。
class MyPlugin_Admin {
public static function render_admin_notice() {
echo $name . ' has been upgraded.';
}
}
add_action( 'admin_notices', array( 'MyPlugin_Admin', 'render_admin_notice' ) );
$name
を追加する方法?
私は以下の解決策を考えています。
1番:
class MyPlugin_Admin {
public static $name;
public static function render_admin_notice() {
echo self::$name . ' has been upgraded.';
}
}
MyPlugin_Admin::$name = 'John Doe';
add_action( 'admin_notices', array( 'MyPlugin_Admin', 'render_admin_notice' ) );
その2
$name = 'John Doe';
add_action('admin_notices', function() use ($name){
echo $name . ' has been upgraded.';
});
なぜなら、No.1はclass
の幅で移入するために$name
を必要とし、そのため混乱を招く可能性があり、No.2は少なくともPHP 5.3を必要とするためです。
より良い実装は「メッセージ」クラスになると思います。
class WPSE_224485_Message {
private $_message;
function __construct( $message ) {
$this->_message = $message;
add_action( 'admin_notices', array( $this, 'render' ) );
}
function render() {
printf( '<div class="updated">%s</div>', $this->_message );
}
}
これにより、レンダリングの前にいつでもメッセージをインスタンス化することができます。
if ( $done ) {
new WPSE_224485_Message( "$name has been upgraded." );
}
もっとずっと簡単にすることができます。
$message = $name . ' has been upgraded.';
add_settings_error( 'my_admin_notice', 'my_admin_notice', $message, 'updated' );
続きを読む https://developer.wordpress.org/reference/functions/add_settings_error/