出于某种原因,被删除的指针只存储为逗号分隔的列表。甚至连序列化数组都没有。因此,从中删除项目的方法是获取值,将其转换为数组,删除所需的元素,重新组合,然后保存:
// Get the dismissed pointers as saved in the database.
$pointers = get_user_meta( $user_id, \'dismissed_wp_pointers\', true );
// Create an array by separating the list by comma.
$pointers = explode( \',\', $pointers );
// Get the index in the array of the value we want to remove.
$index = array_search( \'wp496_privacy\', $pointers );
// Remove it.
unset( $pointers[$index] );
// Make the list a comma separated string again.
$pointers = implode( \',\', $pointers );
// Save the updated value.
update_user_meta( $user_id, \'dismissed_wp_pointers\', $points );
只需更换
wp496_privacy
使用指针的ID。
另一种方法是将ID的字符串替换为空字符串:
pointers = get_user_meta( $user_id, \'dismissed_wp_pointers\', true );
$pointers = str_replace( \'wp496_privacy\', \'\', $pointers );
update_user_meta( $user_id, \'dismissed_wp_pointers\', $points );
但如果它不是列表中的最后一项,那么您可能会得到如下值:
wp390_widgets,,text_widget_custom_html
这可能不会引起问题,但会影响WordPress期望该值的外观。然后,您可以随时替换任何双逗号
,,
带单逗号
,
同样的方法,但是如果后面的逗号是最后一个值,则必须处理它。所以最终我发现数组方法更干净了。