将用户转发到 Wordpress 中的自定义仪表板
Posted
技术标签:
【中文标题】将用户转发到 Wordpress 中的自定义仪表板【英文标题】:Forward Users to Custom Dashboard in Wordpress 【发布时间】:2013-03-02 01:32:20 【问题描述】:我正在尝试赋予“订阅者”角色编辑帖子的能力。 虽然这很成功,但我似乎无法在登录时引导用户离开默认的 wordpress wp-admin 页面。
每当我尝试建议的解决方案时,登录(具有 edit_post 权限)的用户都会被重定向到 wp-admin 页面。
当他们登录时,无论我做什么,wordpress 都会将他们转发给 wp-admin,显示 wordpress 后端。 (我不希望用户看到这个)
我之所以要这样做是因为我有一个自定义仪表板供他们使用,位于http://website.com/login/customdashboard/
我希望这是一个函数。
我试过插件没有成功: “彼得的登录重定向”以及“s2member(登录欢迎页面)”
我尝试了以下功能但没有成功:
function soi_login_redirect( $redirect_to, $request, $user )
return ( is_array( $user->roles ) && in_array( 'administrator', $user->roles ) ) ? admin_url() : site_url();
// end soi_login_redirect
add_filter( 'login_redirect', 'soi_login_redirect', 10, 3 );
另一个尝试没有成功:
function redirect_login_page()
$page_viewed = basename($_SERVER['REQUEST_URI']);
$login_page = site_url();
if( $page_viewed == "wp-login.php" && $_SERVER['REQUEST_METHOD'] == 'GET')
wp_redirect($login_page);
exit();
add_action('init','redirect_login_page');
在这方面的任何帮助将不胜感激。
【问题讨论】:
抱歉,这似乎是Chameleon Question。 一件事是重定向所有/wp-admin
URL,并使这个前端删除链接在那种情况下工作是另一件事。
谢谢 - 将其重新编辑以保持完整性。 :)
酷,再次投票以保持完整性;)
【参考方案1】:
如果你想重定向所有/wp-admin
地址,你可以使用:
add_action( 'admin_init', 'redirect_so_15396771' );
function redirect_so_15396771()
if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
return;
// http://codex.wordpress.org/Roles_and_Capabilities
if ( !current_user_can('delete_users') )
wp_redirect( site_url( '/login/customdashboard/' ) );
exit();
如果需要根据当前页面进行过滤,可以使用全局$pagenow
,其值有index.php
、profile.php
、tools.php
等。
【讨论】:
有趣——delete_users 权限和edit_posts 一样吗?我只是想理解它。 上面的代码似乎做了我想要的,但它似乎阻止了我的用户删除创建的帖子的能力。 - 有什么见解吗? 我允许用户通过与功能相关联的页面中的删除链接删除他们的帖子。 嗯,这看起来像是一个不同的问题。因为,阻止对/wp-admin
的访问是一回事,阻止/启用任何自定义代码(未在原始Q 中发布) 是另一回事。 ::: 回复:delete_users
,检查:codex.wordpress.org/Roles_and_Capabilities
我已经用 Ajax 异常更新了答案,它可能会干扰任何自定义代码。以上是关于将用户转发到 Wordpress 中的自定义仪表板的主要内容,如果未能解决你的问题,请参考以下文章
WordPress 和高级自定义字段管理,仪表板中的自定义列
如何将 is_staff 用户重定向到 Django 中的自定义模板?