Intereting Posts
get_the_content не работает в цикле? 404 Ошибка при попытке установить файл JS Как вернуть строку с jQuery и Ajax внутри в коротком коде? Виджет – ссылка на страницу, а не абсолютный URL Скрыть непосредственно просмотр содержимого для пользовательского типа сообщения Как клонировать тип пользовательских сообщений «Проекты» в теме Divi Wp_update_post: бесконечный цикл даже с решением remove_action, OOP Условно загружать JavaScript на основе дополнительных пользовательских полей в сообщении Изменить количество сообщений на страницу Фильтрация содержимого, но все же необходимо отображать нефильтрованное содержимое внутри фильтра Разница между классом ходока и базовым php Применение моих собственных классов css в wp_menus 3? Разный стиль для определенных строк в таблице пользовательских списков с использованием WP_List_Table Как принудительно принять условия сайта при первом входе в систему? Варьирование поисковых страниц

if && проблемы с transition_post_status

Я пытаюсь заставить эту функцию работать, и, похоже, она не работает при объединении. Когда я просто

$new_status == 'publish' 

он работает, когда я использую только вторую, он также работает. Когда я пытаюсь собрать их вместе, кажется, есть икота.

Также следует отметить, что я попытался просто использовать

 add_action ('publish_tweet', 'twitter_run_when_published'); 

но это тоже не сработало.

Вот полная функция, которую я пытаюсь использовать, это из примера кода

 function intercept_all_status_changes( $new_status, $old_status, $post ) { if ( $new_status == 'publish' && $_POST['post_type'] == 'tweet' ) { // Post status changed twitter_run_when_published (); } } add_action( 'transition_post_status', 'intercept_all_status_changes', 10, 3 ); 

Произведения twitter_run_when_published. Я знаю это, потому что индивидуально работает if / condition.

Некоторые причуды: функция будет работать, если я опубликую немедленно. Это не работает, когда я планирую будущую должность.

Дополнительная информация, которая может помочь, я попытался это сделать в коде, они не сработали.

 add_action('publish_tweet', 'twitter_run_when_published'); //possible alts to make it happen only once and not double down add_action('new_to_publish_tweet', 'twitter_run_when_published'); add_action('draft_to_publish_tweet', 'twitter_run_when_published'); add_action('pending_to_publish_tweet', 'twitter_run_when_published'); add_action('future_to_publish_tweet', 'twitter_run_when_published'); add_action('auto-draft_to_publish_tweet', 'twitter_run_when_published'); add_action('private_to_publish_tweet', 'twitter_run_when_published'); add_action('inherit_to_publish_tweet', 'twitter_run_when_published'); add_action('trash_to_publish_tweet', 'twitter_run_when_published'); 

Только публикация немедленно выполняет упомянутую выше функцию.

Работает классический пример.

 function intercept_all_status_changes( $new_status, $old_status, $post ) { if ( $new_status != $old_status) { // Post status changed twitter_run_when_published (); } } add_action( 'transition_post_status', 'intercept_all_status_changes', 10, 3 ); 

Но это срабатывает многократно. Он не работает в плагине, но наверняка будет работать в теме.

Что мне не хватает? Я бы хотел, чтобы это было, когда публикация статьи и она соответствует тибетскому типу сообщений, который выполняет функцию.

EDIT: Я немного рассмешился и попытался прояснить несколько плохо сформулированных предложений.

Solutions Collecting From Web of "if && проблемы с transition_post_status"

Ваша исходная функция зависит от значения $_POST['post_type'] , установленного в соответствующее значение. Как правило, вам следует избегать использования глобальных переменных – если вы используете только то, что вам дает функция, вам не нужно думать о контекстах в том, что нужно назвать.

В этом случае это то, что произошло. Вы полагаетесь на глобальную переменную $_POST['post_type'] , и хотя это работает в одном состоянии (публикация сообщения), это не в другом (задание cron, обновление сообщения). Короче говоря, $_POST['post_type'] – это не всегда то, что, по вашему мнению, должно быть.

Ниже вы получите тип сообщения из переданной переменной $post :

 function intercept_all_status_changes( $new_status, $old_status, $post ) { if ( $new_status == 'publish' && get_post_type( $post ) == 'tweet' ) { // Post status changed twitter_run_when_published (); } } add_action( 'transition_post_status', 'intercept_all_status_changes', 10, 3 );