WP_UPDATE_POST忽略IF/ELSE

时间:2017-12-28 作者:Markus Finell

我有一个功能,可以发布作为草稿存在的帖子。但是wp\\u update\\u post函数似乎忽略了if/else,并在其他函数之前运行。

        $post = get_posts(array(
            \'post_type\' => \'post\',
            \'post_status\' => array(\'publish\', \'draft\'),
            \'meta_query\' => array(
                array(
                    \'key\' => \'unique_post_meta\',
                    \'value\' => $_GET[\'unique_post_meta\']
                )
            )
        ))[0];

        if($post){
            $post_status = $post->post_status;

            if($post_status == \'publish\' && $post_status != \'draft\'){
                echo \'Post is already published\';
            }
            else{

                if($post_status == \'draft\'){
                    $post_updated = wp_update_post(array(
                        \'ID\' => $post->ID,
                        \'post_status\' => \'publish\'
                    ));
                    if($post_updated){
                        echo \'Post just got published\';
                    }
                    else{
                        echo \'Error\';
                    }
                }
            }
        }
        else{
            echo \'Post doesn\'t exist\';
        }
当帖子是草稿时,我仍然会得到“帖子已经发布”的回复。尽管它应该运行wp\\u update\\u post并回应“post刚刚发布”。它似乎运行wp\\u update\\u post,但随后跳出if/else并再次检查,现在回显“post已经发布”。这怎么可能?

当我注释掉wp\\u update\\u post时,它会回显“Error”。

很明显我错过了什么。。。

1 个回复
SO网友:Vivek Athalye

这怎么可能?

我能想到一种可能,由于某种原因,您的页面正在自动重新加载。所以执行流程是这样的:您访问页面,您的代码执行状态从草稿更改为已发布,然后执行其他一些代码并重新加载页面。这一次,当代码执行时,它会看到帖子已经发布,并相应地输出消息。

与echo语句一起尝试使用error_log 也可以查看日志中的内容。

如果页面是否自动重新加载,也可以在浏览器中选中“开发人员工具”>“网络”选项卡。

结束

相关推荐