Intereting Posts
делать больше действий после публикации публикации Предотвращение индексирования поисковых систем страниц 2, 3 и более? Как я могу отсортировать порядок нескольких настраиваемых значений полей в пользовательском типе сообщений? Удалить 'wp-content / themes / themename /' из пути к изображению Как установить имя блога? Как создать простую слайд-шоу из галереи изображений? Получить URL-адрес изображения из медиа-библиотеки "insert from url" Как удалить все меню администратора? Выход из WordPress только в том случае, если пользователь выйдет из системы или если пользователь удаляет историю браузера Удалить значение параметра из массива с помощью update_option () Обновление базы данных с помощью дополнительных настраиваемых полей Объявления, зависящие от типа посетителей? Создать Div Wrapper на третьей итерации или когда элементы Loop Query Run Out Фильтрация * out * таксономия из списка сообщений администратора Есть ли хороший учебник для написания пользовательских форм регистрации, регистрации и восстановления пароля?

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

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

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 }