无法访问save_post操作中的post meta

时间:2013-11-26 20:33:20

标签: php wordpress

所以我注意到的是,如果我在save_post函数中检查元值,它会显示为空白,这意味着元值实际上没有输入到帖子中。以此代码为例,

function order_mirror_create($post_id) {

    global $post;

    if($post->ID == ''){
            $pid = $post_id;
    } else {
            $pid = $post->ID;
    }

    $videohost = get_post_meta($pid, 'video_provider', true);


    if ($videohost == "UploadAnime") {

        add_post_meta($pid, 'video_display_order', 1, true);

    } else {

        add_post_meta($pid, 'video_display_order', $videohost, true);

    }

}

$videohost实际上是空白的,因此get_post_meta($pid, 'video_provider', true)不会返回该元字段的实际值,因为它尚未创建。

因此,在上面的代码中,else始终是运行的,因为$videohost为空。我怎样才能解决这个问题?我应该使用哪种action,以便将post meta添加到帖子中的方式运行。

1 个答案:

答案 0 :(得分:0)

您应该更改以下内容:

if ($videohost == "UploadAnime") {

        add_post_meta($pid, 'video_display_order', 1, true);

    } else {

        add_post_meta($pid, 'video_display_order', $videohost, true);

    }

要:

if ($videohost == "UploadAnime") {

        update_post_meta($pid, 'video_display_order', 1, true);

    } else {

        update_post_meta($pid, 'video_display_order', $videohost, true);

    }

我发现add_post_meta对我来说从未真正起作用,而update_post_meta确实有效。