我正在开发一个小插件,但当我在表单中发布后试图显示异常或成功消息时,我被卡住了。
这是我的代码:
class Parametres_Plugin
{
public function __construct()
{
add_filter(\'wp_title\', array($this, \'modify_page_title\'), 20) ;
register_activation_hook(__FILE__, array(\'Parametres_Plugin\', \'install\'));
register_uninstall_hook(__FILE__, array(\'Parametres_Plugin\', \'uninstall\'));
add_action(\'admin_menu\', array($this, \'addAdminMenu\'));
add_action(\'admin_menu\', array($this, \'addAdminSousMenu\'), 20);
add_action(\'wp_loaded\', array($this, \'saveParametre\'));
... Other things ...
}
public function saveParametre(){
try{
... Do something ...
if($var){
echo \'Sucess\';
}else{
echo \'Failed\';
}
} catch (Exception $e){
echo \'Erreur: \'.$e->getMessage()."\\n";
}
}
但如果我这样做,我的消息将显示在代码的开头,而不是表单的开头。我要怎么做才能得到这个?
我想把我的字符串放在一个var会话中,如果它存在于表单中,则显示它,然后将其取消设置。但我肯定我错过了什么。
提前感谢!
最合适的回答,由SO网友:Ismail 整理而成
根据注释,使用global variables 是一个合适的解决方案,因为您正在寻求存储来自标题的自定义消息,这些消息稍后将与标记一起显示,使用会话只会导致额外的代码和额外的内存使用(性能),而您可以保持简单。
如果您打印班级中的任何消息,它将打印在顶部,因为WordPress尚未开始输出。
尝试以下操作:
public function saveParametre()
{
global $my_plugin_message;
try {
#... Do something ...
if ($var) {
$my_plugin_message = \'Sucess\';
} else {
$my_plugin_message = \'Failed\';
}
} catch (Exception $e) {
$my_plugin_message = \'Erreur: \'.$e->getMessage()."\\n";
}
}
现在检查全局var
$my_plugin_message
输出表单时:
<!-- form elements -->
<?php global $my_plugin_message;
if ( isset( $my_plugin_message ) ) : ?>
<?php echo esc_attr( $my_plugin_message ); ?>
<?php endif; ?>
<!-- .. -->
这是全局变量的许多优点之一。很高兴这有帮助。