Intereting Posts
Сохранение значений повторяющегося поля в меню wp Как сохранить страницу, на которой я включен в URL, при поиске в таксономии? Сайт заблокирован WebSense в новой WP Install Какие URL-адреса активов приемлемы для установки «ванильного» MU? Добавить пользовательские классы для привязки в wp_nav_menu Последние сообщения показывают эскиз Почему контент поступает из одного? Пользовательские типы сообщений – текущий заголовок раздела над циклом? На экране музыкальный / аудиоплеер, который захватывает URL-адрес дорожки Отключение комментариев для Post Author Наличие пользовательского пула сообщений, который сталкивается с существующим каталогом Изображения не отображаются при перемещении сайта на локальный pre_get_posts с несколькими запросами Уникальная регистрация для новых авторов для регистрации Расписание мероприятия каждую вторую четверть месяца

Измените 2 поля в сообщении в зависимости от 3-го поля перед сохранением

У меня есть собственный тип контента, называемый картами .

У меня есть 3 настраиваемых мета поля:

my_cards_activity (выбрать тип поля; опции 0 и 1)

my_cards_user (выберите тип, многие параметры)

my_cards_datetime (тип текстового поля, формат yyyy-mm-dd hh: mm)

Когда я нажимаю кнопку SAVE, я хочу получить значение поля my_cards_activity (значение может быть 0 или 1), а если значение равно 0, измените my_cards_datetime и my_cards_user на пустое значение и только после изменения сохраните все. Если это 1, то ничего не делайте.

Как это сделать, прежде чем сохранить вещь? Как должен выглядеть мой код в functions.php?

Используйте hook save_post и положите if внутри функции, которая выполняет сохранение после обычной записи метаданных.

 add_action( 'save_post', 'this_is_the_function_name' ); function this_is_the_function_name( $post_id ) { // No auto saves if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; // make sure the current user can edit the post if( ! current_user_can( 'edit_post' ) ) return; // assure the post type if ( ! get_post_type($post_id) == 'cards' ) return; // assure the data are sended by the form if ( ! isset($_POST['my_cards_activity']) || ! isset($_POST['my_cards_datetime']) || ! isset('my_cards_user') ) return; $activity = $_POST['my_cards_activity']; // and now the simply logic if ( $activity == 1 ) { $datetime = $_POST['my_cards_datetime']; $user = $_POST['my_cards_user']; } else { $datetime = ''; $user = ''; } // save data as array $meta_data = compact("activity", "datetime", "user"); update_post_meta($post_id, 'card_data', $meta_data); // if you want can save data as 3 different meta fields in this case // delete the previous 2 lines and uncommente the following // update_post_meta($post_id, 'card_activity', $activity); // update_post_meta($post_id, 'datetime', $datetime); // update_post_meta($post_id, 'user', $user); } 

Если в вашем метабоке вы установили для него поле nonce, перед его сохранением.

См. Codex для:

  • save_post action hook
  • get_post_type
  • update_post_meta