文档章节

Wordpress 为用户或角色 role 添加 capabilities(权限)

o
 osc_n6euf5h6
发布于 2019/03/20 00:41
字数 366
阅读 10
收藏 0
php

精选30+云产品,助力企业轻松上云!>>>

首先查看角色具有哪些权限:

$admin_role_set = get_role( 'administrator' )->capabilities;
$author_role_set = get_role( 'author' )->capabilities;

 

注意:修改权限的行为是永久性的,除非你手动删除该权限,因为角色的权限设置是保存到数据库中的(保存在数据表 wp_options,字段名称option_name,值为 wp_user_roles),

SQL 命令:

SELECT * FROM `wp_options` WHERE option_name = 'wp_user_roles';

 

 

 

 

 

可以通过两种方式添加权限:

<?php 
  global $wp_roles; // global class wp-includes/capabilities.php
  $wp_roles->add_cap( $role, $cap ); 
?> 
or 
<?php
  $role = get_role( 'author' );
  $role->add_cap( $cap );
?>

Parameters 参数介绍:

$cap 代表权限名称,为字符串,如 'unfiltered_html'

 

 

Example:

function add_theme_caps() {
    // gets the author role
    $role = get_role( 'author' );

    // This only works, because it accesses the class instance.
    // would allow the author to edit others' posts for current theme only
    $role->add_cap( 'edit_others_posts' ); 
}
add_action( 'admin_init', 'add_theme_caps');

 

为特定用户添加功能权限:

$user = new WP_User( $user_id );
$user->add_cap( 'can_edit_posts' );

 

add_cap  的定义位于下列文件中:

wp-includes/class-wp-role.php

wp-includes/class-wp-roles.php

wp-includes/class-wp-user.php


  unfiltered_html 权限允许用户在文章或评论等地方插入 js 代码等特殊标签,但是只有管理员以及 Editor 默认有该权限,具体权限表请查阅:

https://codex.wordpress.org/Roles_and_Capabilities#Author

如果需要为 Author 添加该权限,需要在 functions.php 中增加如下代码:

$author_role_add_cap = get_role('author');
$author_role_add_cap->add_cap('unfiltered_html');
// Add unfiltered html for editor authority
function km_add_unfiltered_html_capability_to_editors( $caps, $cap, $user_id ) {
  if ( 'unfiltered_html' === $cap && ( user_can( $user_id, 'editor' ) || user_can( $user_id, 'author' ) ) ) {
    $caps = array( 'unfiltered_html' );
  }
  return $caps;
}
add_filter( 'map_meta_cap', 'km_add_unfiltered_html_capability_to_editors', 1, 3 );

 

增加以上代码后,就可以在文章编辑中插入 js 代码。

 

资料来源:

https://wordpress.stackexchange.com/questions/227411/how-to-get-all-capabilities-of-an-existing-user-role

https://codex.wordpress.org/Function_Reference/add_cap

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

PO模式你会吗?自动化测试PO模式分层如何实现?

一、什么是PO模式 全称:page object model 简称:POM/PO PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性! 主要分三层: 1.基础层BasePage:封装一些最基础的s...

osc_s4e6jr85
12分钟前
5
0
lodash compact & concat

前置 本篇随笔包含 _.compact 和 _.concat 及其依赖的工具函数。 你可能需要一些 JavaScript 基础知识才能看懂一些没有注释的细节。 compact _.compact(array) 创建一个新数组,包含原数组中...

osc_xu7n68ts
13分钟前
3
0
Django快速开发实践:Drf框架和xadmin配置指北

步骤 既然是快速开发,那废话不多说,直接说步骤: 安装Djagno 安装Django Rest Framework 定义models 定义Rest framework的serializers 定义Rest framework的viewsets 配置Rest framework的...

osc_qo2uprmb
14分钟前
7
0
SQL注入原理及代码分析(一)

前言 我们都知道,学安全,懂SQL注入是重中之重,因为即使是现在SQL注入漏洞依然存在,只是相对于之前现在挖SQL注入变的困难了。而且知识点比较多,所以在这里总结一下。通过构造有缺陷的代码...

osc_axrkis5i
15分钟前
6
0
Tomcat启动流程简析

Tomcat是一款我们平时开发过程中最常用到的Servlet容器。本系列博客会记录Tomcat的整体架构、主要组件、IO线程模型、请求在Tomcat内部的流转过程以及一些Tomcat调优的相关知识。 力求达到以下...

osc_5c67s863
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部