Intereting Posts
Подписаться2 с выбором категорий? Стоит ли искать дизайнера для создания темы WordPress для продажи на ThemeForest? Как сделать плагин для автоматического добавления элемента в навигационное меню Пользовательский jQuery WordPress не найден Список всех страниц и детей в отдельном ul HTML-форму. Отправить в таблицу на той же странице. Получить максимальное и минимальное значение get_term_meta () из таксономического термина Разрешить роль для редактирования одного конкретного плагина Вход пользователя без имени пользователя, только пароль дросселировать / ограничивать зарегистрированные HTTP-запросы пользователя на конкретную страницу в день Обновление родительской темы Свойство JQuery в дочерней теме Увеличьте 10 пост-лимит на страницу Проблема с WP_query Почему hook_post не работает? Gravity Forms Post Fields: Возможно ли иметь несколько ответов на визуализатор формы в той же почте?

Использование save_post для замены заголовка сообщения

Я использую пользовательские сообщения, и в этом я не нуждаюсь в названии.

Это заставляет WordPress устанавливать заголовки моих сообщений в «Auto Draft».

Я хотел бы изменить значение названия на другое, вычисленное из других полей в моем сообщении.

Как мне это сделать, используя save_post или какие-то другие средства?

Этот самый простой способ wp_insert_post_data бы в том, чтобы отредактировать данные в том месте, в который он вставлен, вместо того, чтобы обновлять его позже, используя wp_insert_post_data вместо save_post . Это работает над созданием нового сообщения или обновлением существующего сообщения без изменений. Он также избегает опасности создания бесконечного цикла, запуская update_post в save_post .

 add_filter( 'wp_insert_post_data' , 'modify_post_title' , '99', 1 ); // Grabs the inserted post data so you can modify it. function modify_post_title( $data ) { if($data['post_type'] == 'rating' && isset($_POST['rating_date'])) { // If the actual field name of the rating date is different, you'll have to update this. $date = date('l, dmY', strtotime($_POST['rating_date'])); $title = 'TV ratings for ' . $date; $data['post_title'] = $title ; //Updates the post title to your new title. } return $data; // Returns the modified data. } 

У меня была такая же потребность, поэтому я написал эту функцию, которая работает. Измените его в соответствии с вашими потребностями. Надеюсь это поможет.

 // set daily rating title function set_rating_title ($post_id) { if ( $post_id == null || empty($_POST) ) return; if ( !isset( $_POST['post_type'] ) || $_POST['post_type']!='rating' ) return; if ( wp_is_post_revision( $post_id ) ) $post_id = wp_is_post_revision( $post_id ); global $post; if ( empty( $post ) ) $post = get_post($post_id); if ($_POST['rating_date']!='') { global $wpdb; $date = date('l, dmY', strtotime($_POST['rating_date'])); $title = 'TV ratings for ' . $date; $where = array( 'ID' => $post_id ); $wpdb->update( $wpdb->posts, array( 'post_title' => $title ), $where ); } } add_action('save_post', 'set_rating_title', 12 ); 

Попробуйте фильтр default_title :

 add_filter( 'default_title', 'my_default_title', 10, 2 ); function my_default_title( $post_title, $post ){ $custom_post_type = 'my_awesome_cpt'; // do it only on your custom post type(s) if( $post->post_type !== $custom_post_type ) return $post_title; // create your preferred title here $post_title = $custom_post_type . date( 'Ymd :: H:i:s', time() ); return $post_title; }