这个$post_id是从哪里来的?

时间:2013-05-31 作者:ptriek

我想知道为什么save_post 没有触发“快速编辑”,并找到了解决方案here - 显然是全球性的$post 在快速编辑模式下更新帖子时不可用。

所以-我现在可以工作了-请参见下面的工作示例,但我不明白为什么它可以工作。

function mytestfunc($post_id) 
{
    $key = \'test\';
    $data = \'this is a test\';
    update_post_meta( $post_id, $key, $data );
}
add_action( \'save_post\', \'mytestfunc\' );
谁能解释一下$post_id 是从哪里来的?我没有传递值add_action - 所以我不明白为什么mytestfunc 知道我的目标是哪个帖子?

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

它来自wp_insert_post(), 哪里do_action() 使用两个附加参数调用:

do_action(\'save_post\', $post_ID, $post);
所以添加参数的不是你,而是WordPress。

如果将第四个参数设置为2

add_action( \'save_post\', \'mytestfunc\', 10, 2 );
…你甚至可以得到$post 对象:

function mytestfunc( $post_id, $post ) 

结束

相关推荐