我的自定义插件目前有问题。它实际上记录了所有激发到文件(或屏幕)的操作/过滤器。提交表单时,我需要以某种方式更新数据库中的选项。下面是代码列表本身:
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\'] );
}
}
有什么办法吗?谢谢
最合适的回答,由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。
我想是的。