【问题标题】:How to create a wordpress custom settings page for a subscriber如何为订阅者创建 wordpress 自定义设置页面
【发布时间】:2014-07-23 20:22:57
【问题描述】:

请让我先解释一下我想要完成的任务:

我正在为一个小型的本地公共游泳池构建一个 wordpress 网站。游泳池仅在天气“好”时开放。救生员在早上决定游泳池是否开放。此信息应易于维护并在网站上可见。

我创建了一个显示池是否打开的小部件。该小部件从 de wordpress 数据库中的自定义表中接收数据。小部件的背景在打开时为绿色,在关闭时为红色,如果救生员尚未做出决定,则为橙色。

到目前为止没有问题。对于救生员,我创建了一个用户帐户来登录。他应该能够设置/修改的唯一一件事是游泳池今天是否开放。不应允许他编辑/发布页面/帖子或查看仪表板上的任何其他内容。

所以我的想法是让救生员成为“订阅者”。但现在我正在努力他如何访问“打开或不选项”的设置页面。以及在哪里制作这个设置页面?

第一个想法:让它在后端可用,但我如何确保它可供订阅者使用?

第二个想法:让它在前端可用。但是,我该怎么做呢?

有人做过这样的事吗?谁能指出我的解决方案?

谢谢! 卢克

【问题讨论】:

    标签: wordpress settings user-management


    【解决方案1】:

    为了使事情尽可能干净,我将注册一个新的自定义lifeguard 角色和分配给该角色的open_pool 功能。你会给你所有的救生员lifeguard角色。

    然后您可以使用以下命令将对话框添加到前端或后端:

    if (current_user_can ( 'open_pool' ) {
       print $pool_open_close_form;
    }
    

    要开始使用,请查看 this WPSE threadRoles and Capabilities section of the Codex

    【讨论】:

    • 谢谢,很好的建议。我不知道也可以创建新功能。也会用这个。
    【解决方案2】:

    您可以使用 wp_get_current_user(); 进行单次登录,而不是基于订阅。

    例如,在您的 functions.php 文件中,您可以放置​​以下内容。

    $current_user = wp_get_current_user();
    if($current_user->user_login == 'User1') {
    
        function example_add_dashboard_widgets() {
    
        wp_add_dashboard_widget(
                'example_dashboard_widget',         // Widget slug.
                'Example Dashboard Widget',         // Title.
                'example_dashboard_widget_function' // Display function.
            );  
        }
        add_action( 'wp_dashboard_setup', 'example_add_dashboard_widgets' );
    
        function example_dashboard_widget_function() {
    
            // Display whatever it is you want to show.
            echo "Hello World, I'm a great Dashboard Widget";
        } 
    }
    

    这将检查用户名是否与“User1”匹配,然后会添加一个仪表板小部件,这意味着这将是救生员在登录时看到的第一件事。当然,如果有多个救生员,这确实意味着可能会有一个共享日志.

    来源:

    http://codex.wordpress.org/Function_Reference/wp_get_current_user http://codex.wordpress.org/Dashboard_Widgets_API

    【讨论】:

    • 好建议。由于没有高级设置,因此最好通过仪表板小部件进行设置。我将结合“cpilko”在其他回复中提到的自定义用户角色和功能进一步深入研究。
    【解决方案3】:

    您可以使用像Adminimize (https://wordpress.org/plugins/adminimize/) 之类的插件来仅显示救生员的某些菜单功能,以更改池的状态并删除所有其他帖子/页面相关的菜单项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-28
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多