新建自定义发布后第一个自定义发布自定义字段为空

时间:2011-09-28 作者:Ashley Staggs

我正在处理一个主题,它包含一个带有自定义字段的自定义帖子类型。

除了添加新的自定义帖子时,第一个自定义帖子的自定义字段和第一个自定义帖子的自定义字段都会被删除之外,其他一切都正常工作。

function save_details(){  
    global $post;  
    update_post_meta($post->ID, "testimonyname", $_POST["testimonyname"]);
}  
add_action(\'save_post\', \'save_details\'); 
这是我用来保存自定义字段数据的

3 个回复
最合适的回答,由SO网友:Ashley Staggs 整理而成

问题比我想象的还要严重。

以下是解决方案:Add New Post (Custom Post Type) Deletes 1 Post's Custom Meta Data

SO网友:Joost de Valk

首先save_post 有一个论点$post_id, 所以没有必要全球化$post. 在某些情况下,$post 当你这样做的时候,它可能不会(再)被设置,这可能就是它中断的原因。其次,您可能应该检查是否存储了修订(见下文)。因此,您的代码应该如下所示:

function save_details( $post_id ){  
    if ( wp_is_post_revision( $post_id ) )
        $post_id = wp_is_post_revision( $post_id );

    update_post_meta( $post_id, "testimonyname", $_POST["testimonyname"] );
}  
add_action(\'save_post\', \'save_details\', 10, 1); 

SO网友:Ryan

Joost的上述回答对我不起作用。相反,我发现从save_postpost_updated 解决了我的问题。

结束

相关推荐

分配给特定自定义分类术语的GET_POSTS,而不是该术语的子项

假设我有以下分类术语:Term 1 Term 1.1 Term 1.2 Term 2 Term 2.1 我如何才能只获得分配给第1学期的职位,而不包括分配给第1.1学期或第1.2学期的职位?例如:$pages = get_posts(array( \'post_type\' => \'page\', \'numberposts\' => -1, \'tax_query\' => array(