从类似于 get_delete_post_link 的前端将 Wordpress post 状态设置为 'Draft'

Set Wordpress post status to 'Draft' from front end similar to get_delete_post_link

我正在使用以下代码允许登录用户设置从前端删除他们自己的 post。有没有办法做同样的事情,但将 post 设置为 'draft' 而不是完全删除它?

<?php if ($post->post_author == $current_user->ID) { ?>
   <p><a onclick="return confirm('Are you SURE you want to delete this?')" href="<?php echo get_delete_post_link( $post->ID ) ?>">Delete post</a></p>
<?php } ?>

使用这个函数wp_update_post(),你可以用这个例子来测试:

如果 post 将成为草稿

,请先创建一个表单供用户使用 select
<form action="" method="POST" >
    <input type="checkbox" value="ok" name="draft">
    <input type="submit" value="Ok">
</form>

然后创建一个函数来保存新状态,将其放入 function.php:

function toDraft($pid){

$toDraft = $_POST['draft'];
   if($toDraft == 'ok'){
      echo "string";
      wp_update_post(array('ID' => $pid, 'post_status'   =>  'draft'));
  }

}

然后在您创建的表单下方添加此功能。

toDraft($post->ID);

然后测试。 Read this 了解更多更新 post 状态