Intereting Posts
Имеет ли только пользовательский тип сообщения страницы архива типа публикации? форма пользовательских комментариев для пользовательских типов сообщений Выберите случайную запись каждый день Добавить кнопку Ajax для рейтинга не удалось создать пользовательскую таблицу базы данных при активации плагина wordpress по методу php OOP Multisite vs Role Scoper Создание настраиваемого типа сообщений для только зарегистрированных пользователей Использование пользовательского / динамического «slug» для страницы Список таксономических терминов, основанных на другой таксономии WP_Query многократное использование отношения и / или Пользовательские строки для перевода с использованием плагина Polylang Настройка пользовательских вложений в представлении сообщения Категории, не указанные в админе, после добавления продуктов woocommerce через wp wc cli wp_query, дать первое сообщение различного форматирования Может ли обратные ссылки на мой сайт увеличить мои шансы на отказ плагина

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 );