MyController

WEB業界素人の僕がまた見返しそうなことのメモです。

【Wordpress】管理画面を使っていろいろやる時の権限設定とかメニューの非表示とか

function.phpに下記を記載

 

//メニューを非表示にする
function remove_menus () {
global $menu;
unset($menu[2]); // ダッシュボード
// unset($menu[4]); // メニューの線1
// unset($menu[5]); // 投稿
// unset($menu[10]); // メディア
// unset($menu[15]); // リンク
// unset($menu[20]); // ページ
// unset($menu[25]); // コメント
// unset($menu[59]); // メニューの線2
// unset($menu[60]); // テーマ
// unset($menu[65]); // プラグイン
// unset($menu[70]); // プロフィール
// unset($menu[75]); // ツール
// unset($menu[80]); // 設定
// unset($menu[90]); // メニューの線3
}
add_action('admin_menu', 'remove_menus');

 

//管理者以外ダッシュボードにアクセスされたら固定ページ一覧にリダイレクト
if ( !is_super_admin() ) {
add_action( 'admin_init', 'redirect_dashiboard' );
}
function redirect_dashiboard() {
if ( '/wp-admin/index.php' == $_SERVER['SCRIPT_NAME'] ) {
wp_redirect( admin_url( 'edit.php?post_type=page' ) );
}
}

 

//投稿リストから「すべて」などを消す
function custom_columns($columns) {
if (!current_user_can('level_10')) {
echo '<style type="text/css">li.all,li.publish,li.pending {display:none;}</style>';
}
return $columns;
}
add_filter( 'manage_posts_columns', 'custom_columns' );

 

// 管理バーの項目を非表示
function remove_admin_bar_menu( $wp_admin_bar ) {
$wp_admin_bar->remove_menu( 'wp-logo' ); // WordPressシンボルマーク
//$wp_admin_bar->remove_menu('my-account'); // マイアカウント
}
add_action( 'admin_bar_menu', 'remove_admin_bar_menu', 70 );

 

 

//Basic認証
function basic_auth($auth_list,$realm="Restricted Area",$failed_text="認証に失敗
しました"){
if (isset($_SERVER['PHP_AUTH_USER']) and isset($auth_list[$_SERVER['PHP_AUTH_USER']])){
if ($auth_list[$_SERVER['PHP_AUTH_USER']] == $_SERVER['PHP_AUTH_PW']){
return $_SERVER['PHP_AUTH_USER'];
}
}

header('WWW-Authenticate: Basic realm="'.$realm.'"');
header('HTTP/1.0 401 Unauthorized');
header('Content-type: text/html; charset='.mb_internal_encoding());

die($failed_text);
}

 

 

//他の人の投稿を見れないようにする
if (!current_user_can('level_10')) {
function exclude_other_posts( $wp_query ) {
if ( isset( $_REQUEST['post_type'] ) && post_type_exists( $_REQUEST['post_ty
pe'] ) ) {
$post_type = get_post_type_object( $_REQUEST['post_type'] );
$cap_type = $post_type->cap->edit_other_posts;
} else {
$cap_type = 'edit_others_posts';
}

if ( is_admin() && $wp_query->is_main_query() && ! $wp_query->get( 'author' ) && ! current_user_can( $cap_type ) ) {
$user = wp_get_current_user();
$wp_query->set( 'author', $user->ID );
}
}
add_action( 'pre_get_posts', 'exclude_other_posts' );
}