WordPress ユーザー情報を保護する

Filed under: functions.php,wordpress — kdcs @ 2022年4月18日 月曜日

ユーザー情報(ユーザー名や権限)を出力しないようにする。
「?author=ユーザーID」をurlにつけるとID1の投稿者アーカイブにユーザー名が表示されてしまう。

投稿者アーカイブにアクセスできないようにする。
※トップページにリダイレクトさせる
function.phpに記述

add_filter( 'author_rewrite_rules', '__return_empty_array' );
  function disable_author_archive() {
      if( $_GET['author'] || preg_match('#/author/.+#', $_SERVER['REQUEST_URI']) ){
      wp_redirect( home_url( '/404.php' ) );
      exit;
    }
  }
add_action('init', 'disable_author_archive');

WordPressはWP REST APIという仕組みで外部からJSON形式でデータ取得できる。
hogehoge.com/wp-json/wp/v2/usersでユーザーデータが取得できる。
この出力を止める
function.phpに記述

function filter_rest_endpoints( $endpoints ) {
    if ( isset( $endpoints['/wp/v2/users'] )) {
        unset( $endpoints['/wp/v2/users'] );
    }
    if ( isset( $endpoints['/wp/v2/users/(?P<id>[d]+)'] )) {
        unset( $endpoints['/wp/v2/users/(?P<id>[d]+)'] );
    }
    return $endpoints;
}
add_filter( 'rest_endpoints', 'filter_rest_endpoints' );

コメント機能を使っているとコメントテンプレートであるcomment-template.phpにより、コメント欄が出力される。
このテンプレートでは投稿者名のクラスが付与されるのでクラスの出力を止める。
function.phpに記述

function remove_comment_author_class( $classes ) {
  foreach( $classes as $key => $class ) {
      if(strstr($class, "comment-author-")) {
        unset( $classes[$key] );
      }
  }
  return $classes;
}
add_filter( 'comment_class' , 'remove_comment_author_class' );

WordPress 編集者にユーザー編集権限を付与する

Filed under: functions.php,wordpress — kdcs @ 2022年4月16日 土曜日

編集者にユーザー編集権限を与える

function.phpに以下記述

function add_theme_caps() {
  $role = get_role( 'editor' );

  $role->add_cap( 'list_users' ); 
  $role->add_cap( 'create_users' ); 
  $role->add_cap( 'delete_users' ); 
  $role->add_cap( 'promote_users' ); 
  $role->add_cap( 'edit_users' ); 
  $role->add_cap( 'remove_users' ); 
}
add_action( 'admin_init', 'add_theme_caps');

※「使用しないメニューを非表示にする」で管理者以外のメニュー非表示を設定している場合はユーザーをコメントアウトする。

WordPress メニュー「投稿」の名称変更 2022

Filed under: functions.php,wordpress — kdcs @ 2022年4月16日 土曜日

WordPress メニュー「投稿」の名称変更

php8にて、購読者だけ「Undefined array key」エラーが発生するため、記述内に購読者以外の条件分岐を設定。

※PHPエラー「Undefined array key」は配列にて存在しないキー名を指定した際に発生するエラー

function edit_admin_menus() {
if (!current_user_can('subscriber')) {
 	global $menu;
	global $submenu;
    $name = '会員コンテンツ';
    $menu[5][0] = $name;
    $submenu['edit.php'][5][0] = $name.'一覧';
    $submenu['edit.php'][10][0] = '新しい'.$name;
    }
}  
add_action( 'admin_menu', 'edit_admin_menus' );

function change_post_object_label() {
    global $wp_post_types;
    $name = '会員コンテンツ';
    $labels = &$wp_post_types['post']->labels;
    $labels->name = $name;
    $labels->singular_name = $name;
    $labels->add_new = _x('追加', $name);
    $labels->add_new_item = $name.'の新規追加';
    $labels->edit_item = $name.'の編集';
    $labels->new_item = '新規'.$name;
    $labels->view_item = $name.'を表示';
    $labels->search_items = $name.'を検索';
    $labels->not_found = $name.'が見つかりませんでした';
    $labels->not_found_in_trash = 'ゴミ箱に'.$name.'は見つかりませんでした';
}
add_action( 'init', 'change_post_object_label' );

WordPress 管理者以外のメニュー表示制御 2022

Filed under: functions.php,wordpress — kdcs @ 2022年4月16日 土曜日

管理者(level_10)以外がログインしたときのダッシュボードメニュー非表示制御

function remove_menus(){

    if (!current_user_can('level_10')) {
      remove_menu_page('index.php');                  // ダッシュボード
      remove_menu_page('edit.php');                   // 投稿
      remove_menu_page('upload.php');                 // メディア
      remove_menu_page('edit.php?post_type=page');    // 固定ページ
      remove_menu_page('edit-comments.php');          // コメント
      remove_menu_page('themes.php');                 // 外観
      remove_menu_page('plugins.php');                // プラグイン
      remove_menu_page('users.php');                  // ユーザー
      remove_menu_page('tools.php');                  // ツール
      remove_menu_page('options-general.php');        // 設定
    }
  }
  add_action( 'admin_menu', 'remove_menus' );

WordPress ユーザー権限別の条件分岐

Filed under: wordpress — kdcs @ 2022年4月16日 土曜日

管理者

// 権限グループ【管理者】であれば
if (current_user_can('administrator')) {
  //ここに処理を記述
}

編集者

// 権限グループ【編集者】であれば
if (current_user_can('editor')) {
  //ここに処理を記述
}

投稿者

// 権限グループ【投稿者】であれば
if (current_user_can('author')) {
  //ここに処理を記述
}

寄稿者

// 権限グループ【寄稿者】であれば
if (current_user_can('contributor')) {
  //ここに処理を記述
}

購読者

// 権限グループ【購読者】であれば
if (current_user_can('subscriber')) {
  //ここに処理を記述
}

サイト内検索

カテゴリー

最近の投稿

↑上に戻る