dotty
  • 0
Новичок

Вызов функции после создания новой записи для пользовательского типа записи WordPress?

  • 0

Предположим, я создал новый тип сообщений 'product' . Есть ли способ выполнить функцию (созданную пользователем), когда этот новый 'product' пост был создан?

Share
  1. @dotty : Поможет ли какой-либо из приведенных ниже ответов решить вашу проблему? Если да, пожалуйста, проголосуйте за них, чтобы поблагодарить людей, которые помогли вам, и выберите лучший ответ, чтобы ваш вопрос не остался в списке «без ответа».

    • 0
  2. В functions.php:

    function mynewproduct(){
        myfunction();
    }
    add_action( 'new_product', 'mynewproduct' );
    

    Дополнительные сведения и официальную документацию см. здесь:

    http://codex.wordpress.org/Post_Status_Transitions

    • 0
  3. Привет @dotty:

    Взгляните на конец wp_insert_post() функции в файле /wp-includes/post.php (строки с 2148 по 2392 в WordPress 3.0.1. Обратите внимание, что WordPress использует эту функцию как для добавления, так и для обновления сообщений ).

    В конце у него есть следующий код. Из этого кода вы можете идентифицировать вызов wp_transition_post_status() (подробнее об этом чуть позже), и у нас есть хуки действий edit_post, post_updated и save_post ( wp_insert_post честно говоря, я не знаю, почему у нас есть последние два, а не только один. ) Вы можете использовать любой из те, которые подходят для ваших нужд:

    <?php
    wp_transition_post_status($data['post_status'], $previous_status, $post);
    if ( $update ) {
      do_action('edit_post', $post_ID, $post);
      $post_after = get_post($post_ID);
      do_action( 'post_updated', $post_ID, $post_after, $post_before);
    }
    do_action('save_post', $post_ID, $post);
    do_action('wp_insert_post', $post_ID, $post);
    return $post_ID;
    

    И, как упомянул @Jan Fabry, есть хуки действий, найденные в wp_transition_post_status() (с 2713 по 2717 /wp-includes/post.php в WordPress 3.0.1). Обратите внимание, что их три; используйте по назначению:

    <?php
    function wp_transition_post_status($new_status, $old_status, $post) {
      do_action('transition_post_status', $new_status, $old_status, $post);
      do_action("${old_status}_to_$new_status", $post);
      do_action("${new_status}_$post->post_type", $post->ID, $post);
    }
    
    • 0
  4. Будет wp_transition_post_status вызвана функция, и это вызовет действие "${new_status}_$post->post_type", поэтому, если a product перейдет в publish состояние, действие publish_product будет запущено.

    • 0

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

You must login to add an answer.