'all' hook и проблема add_action (плагин на основе классов)

У меня в настоящее время проблема с моим настраиваемым плагином. Он фактически регистрирует все действия / фильтры, запущенные в файл (или на экран). Мне нужно как-то обновить свои параметры в db при отправке формы. Вот сам код:

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'] ); } } 

Есть ли способ об этом? Благодаря!

Solutions Collecting From Web of "'all' hook и проблема add_action (плагин на основе классов)"

Во-первых, template_redirect – это передний конец. Он никогда не срабатывает в вашем резервном хранилище. Вам нужно выбрать бэкэнд-крючок, например admin_init для подключения вашей функции.

Во-вторых, на основе вашего pastebin из вашего другого вопроса , ваш код имеет 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.

Я думаю, что есть.