我们在昨天已经可以显示我们增加的使用,但是在检阅之中,并没有显示正确的roles,所以我们得要依靠着manage_users_columns去将新的roles 栏位做更新,而我们也是与昨天引入template一样,我们先制作template,而我们以一个div作为基础,并且呼叫我们的roles来做显示。
//template/user_roles_filed.php
<div>
<?php
if(is_array($roles) && isset($roles)){
$shown_roles = implode(',',$roles);
echo $showm_roles;
}else{
echo 'None set';
}
?>
</div>
我们的模板之中,会使用roles
来当取得users的所有roles,而我们在设定好页面之後,就是来设定我们的hook与呼叫函数,但我们并不是只有内容要改变,在原生的介面中,显示的是role,而我们预计将它成为roles,所以在这个功能要完整,得加入两个filter,manage_users_columns
与manage_users_columns_content
,一个来处理内容的标题,一个来处理内容,而我们藉由filter回传後,将我们修改的文字回传到原始的栏位上。
add_filter('manage_users_columns','go_ranger_fixed_title', 20 , 1);
public function go_ranger_fixed_title( $columns ) {
unset( $columns['role'] );
$columns['go_ranger_roles'] = __( 'Roles', 'go-ranger' );
return $columns;
}
add_filter('manage_users_custom_column', '' , 10 , 3);
public function output_column_content( $output, $column, $user_id ) {
if (false === in_array($column,'go_ranger_roles') ) return $output;
$user = new WP_User( $user_id );
$roles = ( array ) $user->roles;
ob_start();
include( 'template/user_roles_filed.php' );
$content = ob_get_clean();
return $conten;
}
如此,我们就可以将正确的使用列表加入在我们的使用之上,而昨天说的role其实在预设的只有一些而已,可以看见的就是从subscriber到administrator,在於要活用roles之中还有点落差,所以我们下一步做一个能简单增加roles的,不过今天写的时间太晚了,就没办法做增加caps的功能。
而基本上增加所有的role也是很简单,我们使用add_roles
来处理,其实我们可以很简单的处理做一个在init之中,就可以加入客制化的role。
add_role(
'custom_role',
__( 'Custom Role','go-ranger' ),
array(
'read' => true,
'edit_posts' => true,
)
);
而我们可以专门做一个页面,来检视所有的role与进行编辑,不过我们这边为了明天要做shop as client来做准备,所以我把检视roles与新增roles分离,并且没有加入编辑的功能。
add_action( 'admin_menu', 'gogo_create_menu' );
function gogo_create_menu() {
// 建立主选单
add_menu_page( 'GoGopowerranger Settings Page', 'GoGopowerranger roles Setting',
'manage_options', 'gogGopowerranger-options', 'GoGopowerranger_roles_setting_page',
'dashicons-smiley', 99 );
add_submenu_page( 'gogGopowerranger-options', 'Add New Role', 'new-role', 'manage_options', 'ranger-new-role', 'ranger_new_role_page' );
}
function GoGopowerranger_roles_setting_page() {
$roles = get_roles_list();
foreach($roles as $role) {
echo $role.'</br>';
}
}
function ranger_new_role_page() {
if(isset($_POST['go_ranger_role_name'])){
add_role(ucwords($_POST['go_ranger_role_name']),
__( $_POST['go_ranger_role_name'],'go-ranger' ),
array(
'read' => true,
'edit_posts' => true,
))
echo "<div class='wp-notice information'>Add ".$_POST['go_ranger_role_name']."Succuseess </div>"
}
?>
<form method="post" action="">
<p>
<label>
Enter your role:
<input type="text" name="go_ranger_role_name"/>
</label>
</p>
<?php submit_button( 'Submit', 'primary' ); ?>
</form>
<?php
}
这样我们就可以简单的有列表以及创造的页面了,并且有回传的简单讯息,制作与生产就是这麽朴实无华,我们明天开始剩下的两天或是三天,将完成可以使用管理员制作一张新单,以及替客人下超过限制的客制化下单以及最重要的,计算出正确的价格。
How do I create a comma-separated list from an array in PHP?
How to Add Custom User Roles on Your WordPress Site
<<: Day 27 | 等待的时间不无聊 - loader
单物件 (Single-Object) 和多物件 (Multi-Object) 操作 多物件 (Mu...
接下来照着永丰提供的github, 下一个要使用到的是快照-Snapshot的部分, 简单来说就是当...
今天要用 .NET Core 自带的使用者管理套件 Identity 来实现网站的会员功能 ASP....
本来预计都写在 Day22 的,但是加上本篇内容後会让一天的篇幅太长,且考虑到有些夥伴可能没有建立资...
大家好我是乌木白,今天要讲 Sass 篇的 import,让我们一起学习! 什麽是Import? ...