当我只编辑自定义元字段时,save_post不会触发

时间:2014-11-07 12:04:11

标签: wordpress meta-boxes

我几天前遇到了动作钩save_post,我喜欢利用它。

我定制的帖子类型"属性"与Meta字段关联。问题是,当我对帖子描述和标题进行更新时,只有save_post会触发并执行我的功能,但如果我更改与post关联的元字段而不触及描述和标题,则不会触发save_post。

我错过了什么?

简单场景:只有在对"帖子标题"进行更新时才会触发save_post。并且"发布说明",但是当我仅编辑元字段而不触及描述和标题时,它不是。

有什么建议吗?

我的Functions.php代码挂钩save_post。

function myplugin_save_postdata() {
alert('vijay','Event Fired!');
$postid=get_the_ID();

if ( 'page' == $_POST['post_type'] ) {
if ( ! current_user_can( 'edit_page', $postid ) )
return;
} else {
if ( ! current_user_can( 'edit_post', $postid ) )
return;
}
$old_price = doubleval(get_post_meta($postid, 'REAL_HOMES_property_price', true));
$new_price = $_POST['REAL_HOMES_property_price'];
$vijay=doubleval(get_post_meta($postid, 'REAL_HOMES_property_old_price', true));
update_post_meta($postid,'REAL_HOMES_property_old_price',$old_price);
if($vijay !=''){
$sub_price = $new_price - $vijay;
$dev_price = intval(($sub_price * 100)/$vijay);
update_post_meta($postid, 'REAL_HOMES_property_price_development', $dev_price.'%');
}
}
add_action( 'save_post', 'myplugin_save_postdata' );

2 个答案:

答案 0 :(得分:0)

您可以在更改将触发保存帖子操作的元数据后尝试帖子上的更新按钮...

答案 1 :(得分:0)

当更新post_meta时,不会触发save_post挂钩,但是在保存后期元数据之前,过滤器立即可用:update_post_metadata。这可用于执行相同的处理(并且可以在save_post期间删除处理。)

function prefix_add_custom_filter_for_postmeta_update() {
    add_filter( 'update_user_metadata', 'myplugin_update_foo', 10, 5 );
}
add_action( 'init', 'prefix_add_custom_filter_for_postmeta_update' );


function prefix_custom_filter_for_postmeta_update( $null, $object_id, $meta_key, $meta_value, $prev_value ) {

    // check if this update is for the key we want.
    if ( 'REAL_HOMES_property_price' == $meta_key && empty( $meta_value ) ) {
        // do your processing of values and updating of other metakeys here.
        // processing....
    }

    return null; // this means: go on with the normal execution and save.

}