如何在插件中正确显示发布后的异常或回音字符串?

时间:2016-11-09 作者:RomainA111

我正在开发一个小插件,但当我在表单中发布后试图显示异常或成功消息时,我被卡住了。

这是我的代码:

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会话中,如果它存在于表单中,则显示它,然后将其取消设置。但我肯定我错过了什么。

提前感谢!

1 个回复
最合适的回答,由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; ?>
<!-- .. -->
这是全局变量的许多优点之一。很高兴这有帮助。

相关推荐

在将代码添加到函数后无法登录WordPress wp-admin。php

我在函数末尾添加以下代码。php文件,用于根据自定义帖子的帖子标题填充分类法。问题是,当我添加代码时,尝试登录wp admin时会出现以下错误。非常感谢您能帮助我们弄清楚为什么会发生这种情况。Error:错误:由于意外输出,Cookie被阻止。有关帮助,请参阅此文档或尝试支持论坛。Code: <?php function update_custom_terms($post_id) { // only update terms if