Donc, il y a le cas suivant.
J'ai besoin d'afficher un nom à l'intérieur de 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' ) );
Comment peupler $name
?
Je pense aux solutions suivantes:
N ° 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' ) );
N ° 2:
$name = 'John Doe';
add_action('admin_notices', function() use ($name){
echo $name . ' has been upgraded.';
});
Je n'aime pas les deux en quelque sorte, car le numéro 1 nécessite que $name
soit peuplé de class
large, ce qui pourrait prêter à confusion et que le numéro 2 nécessite au moins PHP 5.3.
Je pense qu'une meilleure implémentation serait une classe "message", par exemple:
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 );
}
}
Cela vous permet d’instancier le message à tout moment avant le rendu:
if ( $done ) {
new WPSE_224485_Message( "$name has been upgraded." );
}
Peut être fait beaucoup plus simple:
$message = $name . ' has been upgraded.';
add_settings_error( 'my_admin_notice', 'my_admin_notice', $message, 'updated' );
En savoir plus sur https://developer.wordpress.org/reference/functions/add_settings_error/