m-torin
  • 0
Учитель

Какой хук следует использовать для программного создания сообщения только при обновлении основного сообщения?

  • 0

У Пиппина и Жана-Батиста Юнга есть очень хорошие руководства о том, как программно создавать контент при публикации нового поста с использованием этих четырех хуков действий…

  • опубликовать{post_type}
  • add_action(‘new_to_publish_{post_type},
  • add_action(‘draft_to_publish_{post_type},
  • add_action(‘pending_to_publish_{post_type}

… чтобы запустить этот скрипт…

global $user_ID;
$new_post = array(
    'post_title' => 'My New Post',
    'post_content' => 'Lorem ipsum dolor sit amet...',
    'post_status' => 'publish',
    'post_date' => date('Y-m-d H:i:s'),
    'post_author' => $user_ID,
    'post_type' => 'post',
    'post_category' => array(0)
);
$post_id = wp_insert_post($new_post);

Какой хук я должен использовать, чтобы выполнять эту функцию только при обновлении сообщения? Спасибо!

Share
  1. вы можете использовать pre_post_update крючок действия следующим образом:

    add_action('pre_post_update','post_updating_callback');
    function post_updating_callback($post_id){
        global $post;
        // verify if this is an auto save routine. 
        // If it is our form has not been submitted, so we dont want to do anything
        if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
          return;
        if ($post->post_status == "publish"){
            //do update stuff here.
        }
    }
    

    Обновлять:

    вместо wp_insert_post() использования wp_update_post вот так:

    //first get the original post
    $postarr = get_post($post_id,'ARRAY_A');
    
    //then set the fields you want to update
    $postarr['post_title'] = "new title";
    $postarr['post_content'] = "new edited content";
    
    $post_id = wp_update_post($postarr);
    

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

    • 0
  2. Эти двое могут быть вашими друзьями:

    add_action('edit_post','your_action');
    
    add_action('pre_post_update','your_action');
    

    См.: Справочник по действиям: действия публикации, страницы, вложения и категории, чтобы получить больше вдохновения…

    PS. Это зависит от контекста, но рассмотрите возможность использования wp_update_post вместо wp_insert_post.

    • 0

Оставить ответ

You must login to add an answer.