我有一个功能,可以发布作为草稿存在的帖子。但是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”。
很明显我错过了什么。。。