В версии WordPress 2.3 появилось три вида потрясающих хуков, которые запускаются при смене статуса поста:
transition_post_status
,{старый_статус}_to_{новый_статус}
,{новый_статус}_{тип_записи}
.Суть каждого из них примерно одинакова, поэтому вы можете использовать любой, который считаете более удобным.
А сейчас остановимся на каждом из них поподробнее.
transition_post_status
имеет три параметра:
function ljubaja_smena_statusa( $new_status, $old_status, $post ) { // по сути всё, что нам нужно, это проверить, чтобы старый статус не был равен новому if ( $new_status != $old_status ) { // дальше выполняем необходимые действия } } add_action( 'transition_post_status', 'ljubaja_smena_statusa', 10, 3 );
Этот хук имеет только один параметр — объект поста, как видите, статусы задаются непосредственно в самом хуке. Вариантов может быть множество future_to_publish
, pending_to_future
, draft_to_publish
и так далее.
Вот ссылка, где перечислены все стандартные статусы постов.
function v_publikaciju( $post ) { // дальше выполняем необходимые действия } add_action( 'future_to_publish', 'v_publikaciju', 10, 1 );
Данный тип хуков очень часто встречается в темах и плагинах WordPress. Уверен, вы уже не раз работали с его разновидностями, например хук publish_post
срабатывает при публикации записи, future_post
— когда запись меняет свой статус на «Запланированная».
Также вместо post
можно указать и другой тип поста, например page
(страницы), тогда хук publish_page
будет срабатывать уже при публикации страниц.
function publikacija_stranic( $ID, $post ) { // хук имеет два параметра - ID поста и объект поста } add_action( 'publish_page', 'publikacija_stranic', 10, 2 );
С версии 2.3 хуки private_to_published
и publish_future_post
устарели и должны быть заменены на соответствующие новые аналоги.
Старый | Новый аналог |
---|---|
private_to_published |
private_to_publish |
publish_future_post |
future_to_publish |
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Здравствуйте! Может быть здесь ответят на вопрос: как убрать поля "сайт" и "е-мэйл" в комментариях вордпресс? Стандартные хаки и плагины не помогают
С помощью comment_form() - https://misha.agency/blog/wordpress/comment_form.html
Спасибо! А можно по-подробнее? Что убрать или что добавить? В каком файле?
Добрый день!
Сорри за нескорый ответ — был в отъезде.
В первую очередь вам нужно зайти в админку в «Настройки > Обсуждение» и убрать галочку с «Автор комментария должен указать имя и email».
Затем вам нужно определить, каким образом у вас выводится форма комментирования:
comments.php
, который находится в папке вашей темы, если там присутствует HTML этих полей, то просто удаляем их.comments.php
их нет, то перейдите по ссылке, которую вам оставил Марат, уверен, вы найдёте решение в описание функцииcomment_form()
.Спасибо! Я просто выкинула два куска кода из comments.php при помощи интуиции и научного втыка и все теперь выглядит, как я хочу.)
Подскажите пожалуйста, в лайтбоксе http://girls-art.ru/portfolio/krasivye-blondinki/#lightbox[group]/1/ при нажатии на кнопку Развернуть, картинка почему-то разворачивается не по размеру окна браузера, а на свой полный размер. Как это можно исправить?
Добрый день.
Имею страницу с выводом всех постов, созданных пользователем.
Возможно ли напротив каждого поста вывести кнопку - Отправить пост на проверку, чтобы менялся статус поста с Черновика на Утверждение?
Помогите с кодом, пожалуйста
Добрый день,
Да, можно конечно.