我正在使用wp_terms_checklist
显示用户签入用户个人资料的选项。以 admin 身份登录时,此功能正常,但当我以订阅者身份登录时,复选框输入已添加disabled="disabled"
。
我不认为这是权限问题,因为内容实际上出现在订阅者的个人资料页面中。它似乎来自这个函数https://codex.wordpress.org/Function_Reference/disabled,为什么我不知道。
这里是代码(这是我正在制作的自定义插件的一部分):
<?php
add_action( 'show_user_profile', 'iw_notify_show_user_options' );
add_action( 'edit_user_profile', 'iw_notify_show_user_options' );
function iw_notify_show_user_options( $user ) { ?>
<h3 id="notifications">Notification Options</h3>
<style>
.iw_notify_heirarchical_list ul { padding-left:20px; }
</style>
<div class='iw_notify_heirarchical_list'>
<ul class=iw_notify_heirarchical_list>
<?php
$selected_cats = get_the_author_meta( 'tax_input', $user->ID );
$selected_cats = $selected_cats['notifications'];
if ( !function_exists( 'wp_terms_checklist' ) ) {
require_once ABSPATH . '/wp-admin/includes/template.php';
}
$post_id = -1;
$args = array(
'descendants_and_self' => 0,
'selected_cats' => array('165','164'),
'popular_cats' => false,
'walker' => '',
'taxonomy' => 'notifications',
'checked_ontop' => false
);
wp_terms_checklist($post_id, $args);
?>
</ul>
</div>
<?php }
add_action( 'personal_options_update', 'my_save_extra_profile_fields' );
add_action( 'edit_user_profile_update', 'my_save_extra_profile_fields' );
function my_save_extra_profile_fields( $user_id ) {
if ( !current_user_can( 'read', $user_id ) )
return false;
update_usermeta( $user_id, 'tax_input', $_POST['tax_input'] );
}
答案 0 :(得分:0)
您是正确的,wp_terms_checklist
已被功能disabled
禁用。
如果您看到核心template.php https://core.trac.wordpress.org/browser/tags/4.4.2/src/wp-admin/includes/template.php#L114,
$tax = get_taxonomy( $taxonomy );
$args['disabled'] = ! current_user_can( $tax->cap->assign_terms );
键disabled
的设置取决于从分类中分配的当前用户roles and capabilities(在您的情况下是分类通知)。
因此,您需要检查功能register_taxonomy
通知,并确保设置参数capabilities
。如果您需要订阅者拥有使用您的条款清单的完全权限,您必须设置如下:
'capabilities' => array(
'manage_terms' => 'read',
'edit_terms' => 'read',
'delete_terms' => 'read',
'assign_terms' => 'read'
)
根据您的需求进行调整。请参阅WP Codex了解角色和能力https://codex.wordpress.org/Roles_and_Capabilities。