Add a button to users.php

时间:2013-11-08 作者:graphical_force

我正在开发一个插件,为每个用户向用户添加元数据。通过添加列显示的php表。我已经这样做了,但我还想添加一个按钮,当按下时会删除用户的元数据。我不知道如何添加它。我希望它位于“更改”按钮的右侧。我以为这样做是为了重新加载页面,但当它这样做时,我会让它删除每个用户的元数据。

我从哪里开始将该按钮添加到页面?这是最好的方式吗?

谢谢

2 个回复
最合适的回答,由SO网友:josh 整理而成

可以你可以像你提到的那样添加一个按钮;但我认为这将需要更多的代码。用户。php页面正在使用WP List Table类。。这意味着我们可以bulk actions 并在那里添加我们的自定义值。

因此,让我们创建一个函数,将新值添加到批量操作下拉框中:

add_action(\'admin_footer\', \'my_user_del_button\');
function my_user_del_button() {
    $screen = get_current_screen();
    if ( $screen->id != "users" )   // Only add to users.php page
        return;
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function($) {
            $(\'<option>\').val(\'del_user_meta\').text(\'Delete User Meta\').appendTo("select[name=\'action\']");
        });
    </script>
    <?php
}
这将在批量操作下拉框中添加“删除用户元”值。现在,我们需要一个函数来实际处理发送的数据:

add_action(\'load-users.php\', \'my_users_page_loaded\');
function my_users_page_loaded() {
    if(isset($_GET[\'action\']) && $_GET[\'action\'] === \'del_user_meta\') {  // Check if our custom action was selected
        $del_users = $_GET[\'users\'];  // Get array of user id\'s which were selected for meta deletion
        if ($del_users) {  // If any users were selected
            foreach ($del_users as $del_user) {
            delete_user_meta($del_user, \'YOUR_METADATA_KEY_TO_BE_REMOVED\');  // Change this meta key to match the key you would like to delete; or an array of keys.
            }
        }
    }
}
在这里,我们遍历我们在旁边放置复选标记的每个用户。然后,它将删除meta_key 您为每个选定的用户指定了。

注意:您需要更改YOUR_METADATA_KEY_TO_BE_REMOVED 字符串设置为要删除的meta\\u键的实际名称。如果要删除多个元密钥,则需要添加多个delete_user_meta() 功能。

SO网友:luukvhoudt

虽然JavaScript方法使用admin_footer hook@josh提到的内容在大多数情况下都有效。在批量操作下拉列表中添加选项肯定不是最好的方法。因为有一个特别的钩子,呜呜呜耶!尝试bulk_actions-{$screen_id} 过滤器挂钩。

add_filter(\'bulk_actions-users\', function($actions) {
    $actions[\'foo\'] = __(\'Foo bar\', \'my-namespace\');
    return $actions;
});
在视图准备就绪后,是时候为该操作设置控制器了。我们将在哪里使用handle_bulk_actions-{$screen_id} 过滤器挂钩。

add_filter(\'handle_bulk_actions-users\', function($redirect, $action, $ids) {
    foreach ($ids as $id) {
        // Perform action for specific id.
    }
    return $redirect;
}, 10, 3);
来源:Custom Bulk Actions

结束

相关推荐

在wp-admin中呈现帖子标题后的内容

我想要一个插件,将自定义内容放在帖子标题下方,并放在永久链接的右侧。然而,我找不到一个具体的动作参考来挂钩。屏幕截图展示了位置概念。如何在3.5版本之前的Wordpress中实现这一点?是否有具体的行动参考?