首页 > 解决方案 > 如何使用 update_user_meta() 删除帖子?

问题描述

我正在将文章加载为输入值中的 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);
     }
 }

标签: phparrayswordpress

解决方案


您的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']);,但我不确定它是否需要。


推荐阅读