2. 1 管理全般に関するカスタマイズ

ユーザ権限拡張, ユーザ設定, ユーザー情報チェック, 購読者 管理画面非表示

ユーザ権限拡張

 投稿者と寄稿者の権限を拡張します。
 投稿者の権限拡張項目は、次の通りです。
  ・固定ページの編集・公開権限
  ・非公開投稿の閲覧権限
 寄稿者の権限拡張項目は、次の通りです。
  ・メディアのアップロード権限
  ・固定ページの編集権限
  ・非公開投稿の閲覧権限

WordPressユーザ設定

 WordPressシステムが管理しているユーザ設定を固定あるいは初期値を設定します。
(1) 'mfold'
 アドミニメニューを閉じるかどうかの設定です。
 管理画面の“ メニューを閉じる”を非表示にしている関係で、メニューを開いたままにします。
(2) 'hidetb'
 エディターツールバーの表示形式の設定です。
 投稿編集のツールバー切り替えボタンを非表示にしている関係で、エディターツールバー全表示に固定します。
(3) 'align'
 “メディアを追加”の、メディアの配置の初期値です。無指定に初期設定します。
 “メディアを追加”で配置を切り替えれば、切り替えた設定でメディアを挿入できます。
(4) 'urlbutton'
 “メディアを追加”の、メディアのリンク先の初期値です。メディアファイルに初期設定します。
 “メディアを追加”でリンク先を切り替えれば、切り替えた設定でメディアを挿入できます。
(5) 'editor'
 HTML編集不可能ユーザーのエディターモードを'tinymce'に初期設定します。

全ユーザー情報チェック

 閲覧画面でログイン名を、セキュリティー改善のため、非表示にします。
 user_nicename、ニックネーム、ブログ上の表示名はデフォルトでは、ログイン名になります。user_nicename は、作成者アーカイブのリンクに使われます。ニックネーム、ブログ上の表示名は閲覧画面に使われます。ブログ上の表示名は管理画面にも使われます。
 また、ニックネームとブログ上の表示名を同じにして閲覧画面表示を統一します。

コード

// --------------------------------
// ユーザ権限拡張
// WordPressユーザ設定
//   アドミニメニュー:開く
//   エディターツールバー:全表示
//   メディアの追加:配置、リンク先
//   エディターモード
// 全ユーザー情報チェック
// --------------------------------
function hk_functions_admin_init() {
    // ログイン者の情報
    $user = wp_get_current_user();
    $user_id = $user->ID;
    // 投稿者 権限拡張
    if ( $user->has_cap('author') ) {
        $caps = array(
            'edit_published_pages',      // 固定ページ
            'delete_published_pages',
            'publish_pages',
            'edit_pages',
            'delete_pages',
            'read_private_posts',        // 非公開
            'read_private_pages',
        );
        foreach ( $caps as $cap ) {
            if ( ! $user->has_cap( $cap ) )
                $user->add_cap( $cap );
        }
        unset( $cap );
    }
    // 寄稿者 権限拡張
    if ( $user->has_cap('contributor') ) {
        $caps = array(
            'upload_files',          // メディアアップロード
            'edit_pages',            // 固定ページ
            'delete_pages',
            'read_private_posts',    // 非公開
            'read_private_pages',
        );
        foreach ( $caps as $cap ) {
            if ( ! $user->has_cap( $cap ) )
                $user->add_cap( $cap );
        }
        unset( $cap );
    }

    // WordPressユーザ設定
    // user_settings
    $user_settings = array(
        'mfold'     => 'o',       // アドミニメニュー:開く
        'hidetb'    => '1',       // エディターツールバー:全表示
        'align'     => 'none',    // メディアの追加:配置 初期値
        'urlbutton' => 'file',    // メディアの追加:リンク先 初期値
    );
    $can_html = get_user_meta( $user_id, 'hk_can_html', true );
    if ( $can_html != 'yes' )
        $user_settings['editor'] = 'tinymce';    // エディターモード
    foreach ( $user_settings as $name => $value ) {
        $setting = get_user_setting( $name );
        if ( $setting != $value )
            set_user_setting( $name, $value );
    }
    unset( $name );
    unset( $value );

    // 全ユーザー情報チェック
    $args = array(
        'orderby' => 'ID',
        'order'   => 'ASC',
        'fields'  => 'all',
    );
    $users = get_users( $args );
    foreach ( $users as $user ) {
        $user_id       = $user->ID;
        $user_login    = $user->user_login;
        $user_nicename = $user->user_nicename;
        $nickname      = $user->nickname;
        $display_name  = $user->display_name;
        $show_admin_bar_front = $user->show_admin_bar_front;
        $new_data = array();
        // user_nicename
        if ( $user_nicename == $user_login )
            $new_data['user_nicename'] = 'user-'.$user_id;
        // ニックネーム
        if ( $nickname == $user_login ) {
            $nickname = 'user-'.$user_id;
            $new_data['nickname'] = $nickname;
        }
        // ブログ上の表示名
        if ( $display_name != $nickname )
            $new_data['display_name'] = $nickname;
        // サイトを見るときにツールバーを表示:表示しない
        if ( $show_admin_bar_front != 'false' )
            $new_data['show_admin_bar_front'] = 'false';
        // データ書き換え
        if ( empty( $new_data ) )        continue;
        $new_data['ID'] = $user_id;
        $user_id = wp_update_user( $new_data );
    }
    unset( $user );
    return;
}
add_action( 'admin_init', 'hk_functions_admin_init' );

購読者 管理画面非表示

 購読者は、管理画面を操作する必要はありませんので、ログイン後、フロントページを表示します。

コード

// --------------------------------
// 購読者 管理画面非表示
// --------------------------------
function hk_functions_auth_redirect( $user_id ) {
    // 購読者以外を除外
    if ( ! current_user_can('subscriber') )            return;
    // フロントページにリダイレクト
    wp_redirect( home_url() );
    exit;
}
add_action( 'auth_redirect', 'hk_functions_auth_redirect' );

説明

 コードの説明は不要と思います。
 寄稿者にメディアのアップロード権限を加えているので、セキュリティー上、WordPress が勝手に作成する添付ファイルのページを非表示にするようカスタマイズする方が良いと思います。

 このプログラムをお使いになる場合は、お使いになる方の自己責任でお願いします。

更新日:2016/03/18
掲載日:2016/03/18