‘all’挂钩和add_action问题(基于类的插件)

时间:2013-09-29 作者:Alex Herrmann

我的自定义插件目前有问题。它实际上记录了所有激发到文件(或屏幕)的操作/过滤器。提交表单时,我需要以某种方式更新数据库中的选项。下面是代码列表本身:

class WP_Test_Logging_Plugin {

//required for the file name
private $yymmddhhmmss;
private $data;

public function __construct() {
    add_action( \'all\', array( $this, \'log_to\' ) );
    add_action( \'admin_menu\', array( $this, \'menu\' ) );
    add_action( \'admin_print_styles\', array( $this, \'plugin_theme_style\' ) );
    add_action( \'template_redirect\', array( $this, \'on_admin_form_submit\' ) );
    $this->yymmddhhmmss = date( \'YMDHis\' );
    if ( get_option( \'where_to_log_to\' ) == false ) {
        update_option( \'where_to_log_to\', 1 );
    }
    $this->data = get_option( \'where_to_log_to\' );
}
我用来处理表单的方法

public function on_admin_form_submit() {
    if ( isset( $_POST[\'selection\'] ) ) {
        update_option( \'where_to_log_to\', $_POST[\'selection\'] );
    }
}
有什么办法吗?谢谢

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

第一template_redirect 是前端挂钩。它从不在后端保存时激发。您需要选择一个后端挂钩,例如admin_init 钩住你的功能。

其次based on your pastebin from you other question, 您的代码具有checked 为两个广播框硬编码的属性,从而使其始终默认为最后一个。您将要这样编辑表单:

<input type="radio" <?php checked($this->data, 1); ?> value="1" name="selection" >
第三,你需要确保你的两个单选按钮都有value 属性

第四,保存时需要更新选项,以便。。。

public function on_admin_form_submit() {
    if ( isset( $_POST[\'selection\'] ) ) {
      if ($_POST[\'selection\'] == 1){
        update_option( \'where_to_log_to\', 1 );
      } else {
        update_option( \'where_to_log_to\', 2 );
      }
    }
    $this->data = get_option( \'where_to_log_to\', 1 );
}
请注意,我显式保存了值1和2。

我想是的。

结束

相关推荐

Temp URL Redirect Loop

我试图通过hostgator使用临时URL(IP/~用户名/域)建立我的网站,但我遇到了一些问题。我已进入数据库,并用新的临时URL替换了旧域的所有实例。问题是我遇到了重定向循环。我在某个地方读到了试图重置永久链接的内容,但我没有访问管理面板的权限。我不知道还有什么可以修复重定向循环。我甚至换了我的。使用新的htaccess,仍然可以获得重定向循环。这是我当前的wp配置文件:define(\"WP_SITEURL\",\"http://IP/~username/example.com\"); de