是否删除Disposed_wp_Points中的一个值?

时间:2018-05-31 作者:joq3

我使用管理指针显示仪表板的“浏览”。当用户完成巡更并按下关闭按钮时,它会在“wp\\u usermeta”中特定用户下的“disposed\\u wp\\u pointers”中保存一个值。这意味着用户不会一次又一次地看到相同的“教程”。这太棒了!但我想创建一个按钮,允许我清除此值。我不想删除“Disabled\\u wp\\u pointers”或清除它的所有值,我只想在按下按钮时删除名为“g\\u tour”的值。

我该怎么做?

编辑:我尝试了以下操作:

<a href="index.php?action=callfunction">Click</a>
<?php
if(isset($_GET[\'action\']) && $_GET[\'action\'] == \'callfunction\') {
    // 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( \'tour\', $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 );
}
?>

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

出于某种原因,被删除的指针只存储为逗号分隔的列表。甚至连序列化数组都没有。因此,从中删除项目的方法是获取值,将其转换为数组,删除所需的元素,重新组合,然后保存:

// 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期望该值的外观。然后,您可以随时替换任何双逗号,, 带单逗号, 同样的方法,但是如果后面的逗号是最后一个值,则必须处理它。所以最终我发现数组方法更干净了。

结束

相关推荐

如何使用PHP以编程方式设置WordPress徽标

我正在研究WordPress主题。我们为主题用户实现了“一键演示导入”,以使用一些虚拟数据快速填充新的空白主题。我的问题是,如何使用PHP设置WordPress站点的徽标?这需要在动作中完成。我打电话add_action( \'pt-ocdi/after_import\', \'kinsley_ocdi_after_import_setup\' ); 在kinsley_ocdi_after_import_setup 我需要运行此处理代码。这似乎不难做到,但我找不到“set\\u logo”功能。仅使用Wo