如何使用update_user_meta()删除帖子?

时间:2018-06-26 00:23:06

标签: php arrays wordpress

我正在以输入值的ID列表的形式加载文章:

$idThisPost = "19999";
<input id="input_post_id" type="hidden" name="varPostId" value="<?php echo $idThisPost; ?>"> 

每篇文章都有一个删除按钮:

<form id="saveId" action="" method="POST" class="" autocomplete="off">
    <input class="idsuser" type="hidden" name="save_post_value" value="<?php echo $userPosts; ?>"> 
    <button type="submit" class="removeJiku save_post btn btn-danger">Remove</button>
</form>

当我们单击删除按钮时,它应该从阵列中删除其ID并在自定义字段上运行更新。运行以下命令会给我一个字符串Array作为值。

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    if (isset($_POST['save_post_value'])) {
        $userPostsQuery = array_diff($userPostsQuery, array($_POST['save_post_value']));
        update_user_meta( $user_id, 'save_post', $userPostsQuery );
        $removed = $_POST['save_post_value'];
        unset($removed);
    }
}

进行如下爆炸仍然会给我Array而不是实际的ids

if ($_SERVER['REQUEST_METHOD'] == "POST") {
     if (isset($_POST['save_post_value'])) {
        $userPostsQuery = array_diff($userPostsQuery, array($_POST['save_post_value']));
        $userPostsQuery = explode(',', $userPostsQuery);
        update_user_meta( $user_id, 'save_post', $userPostsQuery );
        $removed = $_POST['save_post_value'];
        unset($removed);
     }
 }

1 个答案:

答案 0 :(得分:1)

您的update_user_meta( $user_id, 'save_post', $userPostsQuery );调用期望$userPostsQuery是一个字符串,但是您要传递一个数组。您可以像这样将数组转换为逗号分隔的字符串:

update_user_meta( $user_id, 'save_post', implode(',', $userPostsQuery) );

并在声明$userPostsQuery之后立即放置整个删除块,以便后续进程使用更新的数据库数据。

此外,if (isset($_POST['save_post_value'])) {可以充分检查提交的数据,因此if ($_SERVER['REQUEST_METHOD'] == "POST") {可以完全省略。

还有

$removed = $_POST['save_post_value'];
unset($removed);

只是摆脱了$removed,也许您想要unset($_POST['save_post_value']);,但我不确定是否完全需要它。