web-dev-qa-db-ja.com

ポスト発行のみフック?

投稿が初めて「公開」されたときにのみ起動されるフックはありますか。

投稿が「更新」されたとき、またはステータスが「未公開」に設定されてから「公開」されたときにコードを実行したくありません。

編集:

add_action('draft_to_published','func_tion');

function func_tion($post){
    $post_id = $post->ID;   

    if ( !get_post_meta( $post_id, 'mycoderan', $single = true ) )
    // run code to manipulate data
    wp_enqueue_script('plugin_name',plugin_dir_url(__FILE__ ).'script.js');
    $params = array() // set parameters
    wp_localize_script('plugin_name', 'params', $params );
    update_post_meta( $post_id, 'mycoderan', true );
}
4
BAU

{$old_status}_to_{$new_status} および {$new_status}_{$post->post_type} フックは一般的に問題を解決する傾向があります。

投稿ステータスがドラフトに変更されてから(すでに公開された後に)再度公開された場合にコードが実行されないようにするには、post_meta機能を使用して単純なフラグを実装します。

注意:更新されたフックは 'draft_to_published'ではなく 'draft_to_publish'であるべきですが、以下のコードは変更されず、WP 3.5で使用する予定の場合は変更する必要があります

add_action( 'draft_to_published', 'wpse47566_do_once_on_publish' );
function wpse47566_do_once_on_publish( $post ) {
    // check post type if necessary
    if ( $post->post_type != 'a_specific_type' ) return;

    $post_id = $post->ID;

    if ( !get_post_meta( $post_id, 'mycoderan', $single = true ) ) {
        // ...run code once
        update_post_meta( $post_id, 'mycoderan', true );
    }
}
5
soulseekah