添加/更新帖子和插入帖子元后的WordPress钩子?
我有一个名为“视频”的自定义帖子类型,它还定义了一些自定义字段。创建或更新“视频”帖子后,我想运行一个函数 不幸的是,这个函数需要我刚刚创建的帖子的帖子元数据的值,并且通常的钩子(添加/更新帖子和插入帖子元后的WordPress钩子?,wordpress,hook,custom-post-type,Wordpress,Hook,Custom Post Type,我有一个名为“视频”的自定义帖子类型,它还定义了一些自定义字段。创建或更新“视频”帖子后,我想运行一个函数 不幸的是,这个函数需要我刚刚创建的帖子的帖子元数据的值,并且通常的钩子(save_post,publish_post,等等)似乎在将帖子元数据插入数据库之前运行,所以它不可用 如果我只需单击“发布”手动更新帖子,而不进行任何更改,则该功能可以正常工作 是否有一个钩子,在插入所有元数据后,在该过程的稍后阶段触发?有一个名为的未记录钩子,它可以满足我的需要 它将向钩子函数传递4个参数:元ID、
save_post
,publish_post
,等等)似乎在将帖子元数据插入数据库之前运行,所以它不可用
如果我只需单击“发布”手动更新帖子,而不进行任何更改,则该功能可以正常工作
是否有一个钩子,在插入所有元数据后,在该过程的稍后阶段触发?有一个名为的未记录钩子,它可以满足我的需要
它将向钩子函数传递4个参数:元ID、对象ID(与post ID相同)、元键和元值。在我的hooked函数中,我检查元键名称是否是我需要值的字段,如果是,则继续
下面是它的样子:
/**
* Use value of post meta for something when the post
* meta changes
* @param integer $meta_id ID of the meta data field
* @param integer $post_id Post ID
* @param string $meta_key Name of meta field
* @param string $meta_value Value of meta field
*/
function saveYouTubeInfo($meta_id, $post_id, $meta_key='',
$meta_value=''){
// Stop if not the correct meta key
if ( $meta_key != 'my_meta_field_name') {
return false;
}
// Function code goes here.
}
add_action('updated_post_meta', 'saveYouTubeInfo', 10, 4);
顺便说一句,与添加的
post\u meta
不同,您不会将post
替换为目标的post类型。在我的例子中,post类型的名称是videos
,但我仍然必须使用updated\u post\u meta
和NOTupdated\u videos\u metapost meta不可用的原因是他们使用save\u post hook来保存post meta。所以,在将post meta保存到数据库后,钩子并没有运行
你的问题有两个解决方案
从$\u POST获取数据
添加操作(“保存日志”、“我的函数”)
函数我的函数($post\u id){
}
对钩子使用更高的优先级,以便在保存post meta后运行钩子
添加操作('save_post','my_function',12,3)
函数my_函数($post_id、$post、$update){
}为什么不使用wp\u insert\u post
??或者wp\u update\u post
?我已经试过了-在元数据插入数据库之前,它们也会触发。你们能检查一下这个问题吗?我遇到了类似的问题,并使用“added\u post\u meta”操作解决了它。
$postmeta = $_POST['field_name'];
$postmeta = get_post_meta($post_id, 'meta_key', true);