是否有任何钩子只有在帖子第一次“发布”时才会触发。
我不想在帖子“更新”或其状态设置为“未发布”然后再次“发布”时执行代码。
编辑:
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 );
}
最合适的回答,由SO网友:soulseekah 整理而成
这个{$old_status}_to_{$new_status}
和{$new_status}_{$post->post_type}
钩子通常可以解决这个问题。
为了避免在post状态更改为draft然后再次发布(已发布后)时运行代码,请使用post_meta
功能。
Note: 更新的挂钩应为“draft\\u to\\u publish”,而不是“draft\\u to\\u published”,但是,如果您计划在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 );
}
}