Intereting Posts
Индикаторы карусели Bootstrap не будут циклически перемещаться по пользовательской теме WordPress Редактировать HTML-панель навигации WordPress Связать страницу с конкретным шаблоном одной записи? API-интерфейс списка API-адресов? Кэширование WordPress по требованию Инструкции: Перевести множественные формы для тем / плагинов с помощью PoEdit Пользовательский цикл в дополнение к умолчанию на странице архива Что я могу заменить '.get_bloginfo (' url ').' для возврата текущего URL-адреса вместо домашнего адреса? 403 запрещено из-за доступа? Как создать другую версию моего сайта на основе той же базы данных Shortcode плагина не будет работать в файле настраиваемого шаблона Как предотвратить повторное появление папки в моем домашнем каталоге? Как очистить загруженное имя файла из плагина? получать сообщения по специальной пользовательской таксономии в области администратора Как я могу поместить $ _GET коды в function.php?

Выполнять функцию при публикации публикации

Я пытаюсь использовать эту функцию, созданную при публикации публикации в первый раз.

function a_new_post($post){ $post_id = $post->ID; if ( !get_post_meta( $post_id, 'firstpublish', $single = true ) ) { // ...run code once update_post_meta( $post_id, 'firstpublish', true ); } } add_action( 'draft_to_published', 'a_new_post' ); 

Я не вижу ничего плохого в этом, но когда я пытаюсь создать несколько примеров сообщений, я проверяю базу данных, а поле «firstpublished» не создано.

Кто-нибудь видит что-то неправильно?

Solutions Collecting From Web of "Выполнять функцию при публикации публикации"

Правильное действие – 'draft_to_publish' .

Чтобы убедиться, что вы использовали правильный статус, попробуйте получить список всех зарегистрированных статусов сообщений (включая настраиваемые статусы) с помощью:

 <pre><?php print '- ' . implode( "\n- ", array_keys( get_post_stati() ) );?></pre> 

На ванильной установке вы должны получить:

  • публиковать
  • будущее
  • проект
  • в ожидании
  • частный
  • мусор
  • авто-проект
  • унаследовать

Обратите внимание, что publish_post вызывается каждый раз, когда вы редактируете опубликованное сообщение.

Обратите внимание, что get_post_stati() является одним из этих непредсказуемых имен в WordPress: это просто неправильно. Множественное состояние существительного – это статусы на английском языке и statūs на латыни. : D

Вы также можете подключиться к 'transition_post_status' , в зависимости от ваших потребностей. Вы получаете новый и старый статус как аргументы, третьим аргументом является объект post. Он будет улавливать future_to_publish тоже, а также сообщения, которые были разобраны один раз и переизданы сейчас ( trash_to_publish ).

Пример:

 add_action( 'transition_post_status', 'a_new_post', 10, 3 ); function a_new_post( $new_status, $old_status, $post ) { if ( 'publish' !== $new_status or 'publish' === $old_status ) return; if ( 'post' !== $post->post_type ) return; // restrict the filter to a specific post type // do something awesome }