如何从 wordpress 的 usermeta table 中仅删除用户元值(不是键)?
How to delete only user meta value (not key) from usermeta table in wordpress?
我在媒体库中存储了多个图像,并将其 ID 保存在 wp_usermeta table 中。我的 metakey 是 'images',meta 值是 '279,280,281'。现在我像这样从 table 获取图像:
<?php $images = get_the_author_meta( 'images', $user->ID );
echo $images; //output is '279,280,281'.
$images = explode(',',$images);
foreach($images as $img) {
?>
<img src="<?=wp_get_attachment_url( $img );?>" width="100" height="100" />
<a href="<?php echo get_edit_user_link( $user->ID ); ?>&image_id=<?= $img;? >">Delete</a>
<?php } ?>
现在,我不会从 wp_usermeta table 中删除特定的 id。所以,请帮我解决它。我尝试使用这种类型的代码进行删除:
if(isset($_REQUEST['image_id'])){
$image_id = $_REQUEST['image_id'];
// delete_usermeta( $user->ID, $meta_value = $img );
if (($key = array_search($image_id, $images)) !== false) {
unset($images[$key]);
}
wp_delete_attachment($image_id);
}
好吧,您可以使用 get_user_meta 获取所有图像 ID,然后删除您想要的并更新它。像这样
$ID_TO_REMOVE = 279;
$images = get_user_meta( $user_id, 'images', TRUE );
$images = explode(',',$images);
foreach($images as $image){
if((int)$image != $ID_TO_REMOVE){
$new_images .= $image.',';
}
}
update_user_meta($user_id, 'images', $new_images);
我没有测试过这段代码,但它应该是这样的。
我在媒体库中存储了多个图像,并将其 ID 保存在 wp_usermeta table 中。我的 metakey 是 'images',meta 值是 '279,280,281'。现在我像这样从 table 获取图像:
<?php $images = get_the_author_meta( 'images', $user->ID );
echo $images; //output is '279,280,281'.
$images = explode(',',$images);
foreach($images as $img) {
?>
<img src="<?=wp_get_attachment_url( $img );?>" width="100" height="100" />
<a href="<?php echo get_edit_user_link( $user->ID ); ?>&image_id=<?= $img;? >">Delete</a>
<?php } ?>
现在,我不会从 wp_usermeta table 中删除特定的 id。所以,请帮我解决它。我尝试使用这种类型的代码进行删除:
if(isset($_REQUEST['image_id'])){
$image_id = $_REQUEST['image_id'];
// delete_usermeta( $user->ID, $meta_value = $img );
if (($key = array_search($image_id, $images)) !== false) {
unset($images[$key]);
}
wp_delete_attachment($image_id);
}
好吧,您可以使用 get_user_meta 获取所有图像 ID,然后删除您想要的并更新它。像这样
$ID_TO_REMOVE = 279;
$images = get_user_meta( $user_id, 'images', TRUE );
$images = explode(',',$images);
foreach($images as $image){
if((int)$image != $ID_TO_REMOVE){
$new_images .= $image.',';
}
}
update_user_meta($user_id, 'images', $new_images);
我没有测试过这段代码,但它应该是这样的。