Показать сообщение после публикации нового сообщения (WordPress) - PullRequest
0 голосов
/ 30 сентября 2019

При публикации нового сообщения в WordPress я хочу показать дополнительное admin_notice, чтобы показать пользовательское сообщение. Я использую admin_notices крючки для этого. Я проверил это, и это работает. Что не работает, так это показать его при публикации.

Я попробовал несколько методов, включая ' publish_post' hook. Крюк стреляет, когда я ставлю var_dump('bla');exit();, я вижу это работает. Я думаю, что причина, по которой admin_notices не отображается, в том, что страница обновляется. Поэтому, если было бы что-то вроде 'after_publish_post', это было бы замечательно, но я не могу его найти.

Я также попробовал кое-что, что нашел в похожем вопросе:

if( ( $_POST['post_status'] == 'publish' ) && ( $_POST['original_post_status'] != 'publish' ) ) { echo "New post!"; exit();}

Этотакже не имеет никакого эффекта

-

На данный момент у меня есть:

add_action('publish_post', array($this,'onInsertPost')); //does work, function gets triggered

public function onInsertPost($post_id, $post, $update) {
            add_action( 'admin_notices', array($this, 'info_text_news') );
    }

public function info_text_news() {
    $class = 'notice notice-info';
    $message = __( 'My message', 'admin_notice' );

printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), $message); 

}

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

1 Ответ

0 голосов
/ 02 октября 2019

Я нашел решение для этого. Я проверяю дату публикации и сравниваю ее с сегодняшней датой. Если сообщение опубликовано сегодня, оно вызывает хук. В моем случае, один день в порядке. Если вам нужно показать его только после публикации, вы также можете настроить его на проверку времени.

        global $pagenow;
        if ( $pagenow == 'post.php' ) {
            $currentPost = get_post( $_GET['post'] );
            $postdate = substr($currentPost->post_date, 0 , 10); 

            //if  post type is post and post is published today show info message
            if($currentPost->post_type == 'post' && $postdate == date('Y-m-d')) {
                add_action( 'admin_notices', array($this, 'info_text_news') );
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...