Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress后期更新未通过Wordpress挂钩更新后期_Php_Wordpress_Post Meta - Fatal编程技术网

Php Wordpress后期更新未通过Wordpress挂钩更新后期

Php Wordpress后期更新未通过Wordpress挂钩更新后期,php,wordpress,post-meta,Php,Wordpress,Post Meta,我想通过wordpess钩子更新帖子的postETA值,但我无法更新它。这是我的密码 function check_values($post_ID, $post_after, $post_before){ $oldFob = get_post_meta( $post_ID, 'price', true); if($oldFob){ update_post_meta( $post_ID, 'price', 500); }else{

我想通过wordpess钩子更新帖子的postETA值,但我无法更新它。这是我的密码

function check_values($post_ID, $post_after, $post_before){

     $oldFob = get_post_meta( $post_ID, 'price', true);
     if($oldFob){
         update_post_meta( $post_ID, 'price', 500);
     }else{
         add_post_meta( $post_ID, 'fob-price', 500 , true);
     }
   }

 add_action( 'post_updated', 'check_values', 10, 3 );
当我在
update\u post\u meta
后不久放入die,并检查db时,它可以工作,但回到编辑post页面后,它会恢复

基本上,它是在更新post meta,但在更新后,会运行另一个默认wordpress函数并将其重置为旧值


任何专家的建议,为什么会发生这样的事

问题是因为hook
post\u updated
是在post的metas实际保存之前触发的

所以基本上你更新了帖子的meta,然后帖子就用请求中提交的meta值更新了

要解决此问题,您可以使用具有高优先级的
save_post
钩子,使钩子最后运行:

add_action('save_post', function ($post_ID) {
    $oldFob = get_post_meta( $post_ID, 'price', true);

    if ($oldFob) {
        update_post_meta( $post_ID, 'price', 500);
    } else {
        add_post_meta( $post_ID, 'fob-price', 500 , true);
    }
}, 100);

有关更多信息:

它对我很有用。非常感谢!!!。你能给我发一个链接吗hooks@MahaDev你可以看看这个: