Поддержка Проблемы и решения Хук Publish Post — проблема

  • Решено Tekuto

    (@tekuto)


    Есть хук publish post, вернее у нас publish cases, который срабатывает после публикации типа записей cases.

    Заметил такую особенность. Он срабатывает до записи данных в таблицу postmeta. В postmeta записываются адреса, по которым необходимо отправить оповещение на почту. Отсюда значения email-ов пустые. Письма не отправляются.

    Как быть? Есть хук, который срабатывает после записи поста и после записи всех метаданных этого поста???

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Автор Tekuto

    (@tekuto)

    В общем, кому интересно будет решение.
    Использовал хук save_post.
    Но вылез еще один косяк, он срабатывает даже тогда, когда отправляешь запись в корзину.
    В итоге использовал дополнительно хук wp_trash_post для того, чтобы удалить связь функции с save_post.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    save_post принимает не только ID записи, но и саму запись, т.е. можно проверить её статус:

    function new_post_notification($post_id, $post) {
    	if ( 'trash' == $post->post_status )
    		return;
    
    	// ваш код
    }
    add_action('save_post', 'new_post_notification', 10, 2);

    Если нужно выполнить код только при публикации, есть и такой вариант:

    function new_post_notification($new_status, $old_status, $post) {
    	if ( 'publish' == $old_status )
    		return;
    
    	// ваш код
    }
    add_action('transition_post_status', 'new_post_notification', 10, 3);

    Автор Tekuto

    (@tekuto)

    Сергей, благодарю. Сегодня посмотрю.

    Автор Tekuto

    (@tekuto)

    transition_post_status — работает аналогично publish_post.
    мета-данные недоступны.

    и первый код с указанием if ( 'trash' == $post->post_status ) не работает как надо.

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Хук Publish Post — проблема» закрыта для новых ответов.