php - 如何使用 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);
}
}
解决方案
您的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']);
,但我不确定它是否需要。