WordPress multisite中的管理员角色是在保存页面时删除内容
我有一个WordPress多站点设置,我正试图用一些html标签上的数据属性保存页面内容。超级用户可以毫无问题地保存,但是当管理员或较低级别的角色保存时,它会删除标记中的数据属性。是否有任何方法允许其他用户角色在html中保存数据属性 需要明确的是,剥离的不是html标记本身,而是数据属性,如下所示:WordPress multisite中的管理员角色是在保存页面时删除内容,wordpress,networking,attributes,custom-data-attribute,multisite,Wordpress,Networking,Attributes,Custom Data Attribute,Multisite,我有一个WordPress多站点设置,我正试图用一些html标签上的数据属性保存页面内容。超级用户可以毫无问题地保存,但是当管理员或较低级别的角色保存时,它会删除标记中的数据属性。是否有任何方法允许其他用户角色在html中保存数据属性 需要明确的是,剥离的不是html标记本身,而是数据属性,如下所示: <p data-item="1">String</p> 字符串 以上内容将另存为: <p>String</p> 字符串 这也不是一个小问题,
<p data-item="1">String</p>
字符串
以上内容将另存为:
<p>String</p>
字符串
这也不是一个小问题,我会在所见即所得和源代码视图之间来回切换,它会保持不变,只有当我保存页面时,它才会被剥离,并且只适用于在多站点中低于超级用户的用户
感谢您的帮助,谢谢 您遇到的问题是功能。如果您阅读该法典链接,您会注意到以下内容: 注意:在WordPress Multisite中,只有超级管理员具有
未过滤html
功能
要解决这个问题,您需要将unfiltered_html
功能添加到administrator
角色中。如果你不知道怎么做,请继续阅读:
你需要利用这个函数。像下面这样的东西就足够了。如果整个网络使用一个主题,则可以将以下代码粘贴到活动主题的functions.php
文件中
否则,您可能需要使用-基本上创建一个文件,如custom functions.php
,将以下代码粘贴到其中,然后将其放入/wp content/mu plugins/
(如果它不存在,请创建它)。这将使它成为一个“必须使用的插件”,无论发生什么,它总是被加载,并且不能被激活/停用
function so_51604149_add_cap(){
$role = get_role( 'administrator' );
if( $role ){
$role->add_cap( 'unfiltered_html' );
}
}
add_action( 'init', 'so_51604149_add_cap' );
或者,有一个混合的“用户权限”和“用户角色”类型的插件可以提供帮助。你问题的要点是,超级管理员是WordPress MultiSite上唯一具有
未过滤html
功能的角色。Xhynk让我找到了这个解决方案,谢谢
未过滤的html功能已被弃用,因此为了模拟该功能的功能,我在代码中添加了以下内容:
add_action( 'init', 'kses_unfiltered_html' );
function kses_unfiltered_html() {
$user = wp_get_current_user();
if ( current_user_can('edit_pages') )
kses_remove_filters();
}
这就是我所需要的,它允许任何可以编辑页面的用户保存未过滤的内容。其他人可能需要一个角色来代替编辑页面,例如:
add_action( 'init', 'kses_unfiltered_html' );
function kses_unfiltered_html() {
$user = wp_get_current_user();
if ( current_user_can('administrator') )
kses_remove_filters();
}
这个过滤器对我有效:
// Add the unfiltered_html capability back in to WordPress 3.0 multisite. o(8MNTW9B2WUi(ITf8N&0rc$
function allow_unfiltered_html_multisite( $caps, $cap, $user_id, $args ) {
if ( $user_id !== 0 && $cap === 'unfiltered_html' ) {
$user_meta = get_userdata($user_id);
if ( in_array( 'administrator', $user_meta->roles, true ) ) {
// Re-add the cap
unset( $caps );
$caps[] = $cap;
}
}
return $caps;
}
add_filter('map_meta_cap', 'allow_unfiltered_html_multisite', 10, 4 );```