投稿が初めて「公開」されたときにのみ起動されるフックはありますか。
投稿が「更新」されたとき、またはステータスが「未公開」に設定されてから「公開」されたときにコードを実行したくありません。
編集:
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 );
}
{$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 );
}
}