添加/更新帖子和插入帖子元后的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
和NOT
updated\u videos\u meta

post 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);