WebコンテンツをHTMLやCSSなどの知識がない人でも更新が行えるように、多くのホームページにはCMS(コンテンツ管理システム)が導入されています。
その中でも世界中で好まれて使われているCMSがWordPressです。
WordPressは「テーマ」や「プラグイン」を使うことで自分好みのホームページにカスタマイズすることができます。
私たちホームページ制作会社もWordPressを利用して、お客様がホームページ内のコンテンツ(ブログや事業内容など)を更新できるようにしています。
テーマやプラグインはネット上で配布されているものを利用することもありますが、基本はオリジナルのテーマを作成し、お客様それぞれの要望にあった形にして納品します。
そして、WordPressでテーマを作る時、ユーザーに表示されるページだけでなく、管理画面のカスタマイズも行っています。
管理画面のカスタマイズでは以下の2つに気をつけなければいけません。
1のユーザビリティについては、有料のテーマなどを使用するとある程度汎用性のある形で投稿機能などを組み込んでくれていますが、オリジナルのテーマを作る時は自分で実装する必要があります。
また、2のセキュリティについては、無料のプラグインも多くあるので、インストールしておくと良いでしょう。
WordPressは有名であるがゆえ、不正アクセスや攻撃の対象になりやすいです。何も対策していない状態で公開して、万が一管理画面などに不正アクセスされてしまうとホームページに障害が発生されてしまったり、個人情報流出などの事態にもなりかねないので、ホームページの公開前にはしっかりと対策しておきましょう。
WordPressはインストールするとデフォルトでいくつかのメニューが表示されますが、毎回すべてのメニューが必要になる訳ではありません。
ホームページのブログ記事ページにコメント機能を表示していないのであれば「コメント」メニューは必要ないでしょう。
また、固定ページのみ必要でブログ機能は必要ないということであれば「投稿」メニューも表示されるべきではありません。
不必要なメニューはアクションフックを使って無効化しましょう。すべての権限のユーザーでメニューが非表示になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
add_action('admin_menu', 'remove_menus'); function remove_menus () { global $menu; # 必要ないメニューをアンコメントして無効化 #unset($menu[2]); // ダッシュボード #unset($menu[5]); // 投稿 #unset($menu[10]); // メディア #unset($menu[20]); // ページ #unset($menu[25]); // コメント #unset($menu[60]); // テーマ #unset($menu[65]); // プラグイン #unset($menu[70]); // プロフィール #unset($menu[75]); // ツール #unset($menu[80]); // 設定 } |
WordPressはユーザーの役割に合わせてデフォルトでいくつかの権限を用意してくれています。
下記のリストでは下に行くほど機能の制限がなくなります。
基本的にホームページの制作者が管理者権限を持ち、運用者は編集者や投稿者に設定すると良いでしょう。
また会員制などコンテンツの閲覧に制限をかけるならホームページのユーザーは購読者になってもらうと良いでしょう。
必要のない機能やメニューはアクションフックや権限を使って非表示にしましょう。
もし、ホームページでブログコンテンツのページ名が「お知らせ」だった場合、管理画面上の「投稿」の名前も「お知らせ」に変えるとより親切です。
企業のホームページ担当者はWordPressを知らない人も多いでしょう。管理画面で「投稿」というメニューが何を指しているのかわからず、お知らせの更新ができないかもしれません。
ホームページ担当者がお知らせを更新するために管理画面に入ったら、まず「お知らせ」というメニューを探す人が多いのではないでしょうか。WordPressの「投稿」という概念を知らないと「お知らせ」=「投稿」と気づくのに時間がかかるでしょう。
これを解決する簡単な方法は「投稿」のメニュー名を「お知らせ」に変えてあげることです。そうするだけでホームページ担当者はすぐに自分の目的のメニューを探し出せるでしょう。
アクションフックを使ってメニュー名を変更できます。メニュー名はサイド以外にも多くの箇所で表示されるので、それぞれ変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
function change_post_menu_label() { global $menu; global $submenu; $menu[5][0] = 'お知らせ'; $submenu['edit.php'][5][0] = 'お知らせ一覧'; $submenu['edit.php'][10][0] = '新しいお知らせ'; } function change_post_object_label() { global $wp_post_types; $labels = &$wp_post_types['post']->labels; $labels->name = 'お知らせ'; $labels->singular_name = 'お知らせ'; $labels->add_new = _x('追加', 'お知らせ'); $labels->add_new_item = 'お知らせの新規追加'; $labels->edit_item = 'お知らせの編集'; $labels->new_item = '新規お知らせ'; $labels->view_item = 'お知らせを表示'; $labels->search_items = 'お知らせを検索'; $labels->not_found = '記事が見つかりませんでした'; $labels->not_found_in_trash = 'ゴミ箱に記事は見つかりませんでした'; } add_action( 'init', 'change_post_object_label' ); add_action( 'admin_menu', 'change_post_menu_label' ); |
投稿や固定ページにカスタムフィールドを追加する場合なども、ホームページ上と管理画面上で名前が違うと更新者が混乱します。
これはホームページの作ったばかりの時期には起こらないですが、更新を繰り返していく中で複雑になりがちです。
原則、メニュー名はホームページ上のコンテンツ名と同じにしておくと良いでしょう。
WordPressのログインURLはデフォルトで「WPのインストールディレクトリ/wp-login.php」です。
ログイン情報を知っていなくてもログインページを知られているとそこから総当たり攻撃をされてしまいます。
アクションフックを使ってログインURLを変更しておきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
define('LOGIN_PAGE', '変更するログインページ名.php'); add_action('login_init', 'admin_login_init'); function admin_login_init() { // 変更後のログインページが存在しなければ何もしない if (!file_exists(ABSPATH.'/'.LOGIN_PAGE)) return false; if( !defined('LOGIN_KEY') || password_verify( 'login', LOGIN_KEY) === false ) { status_header(404); nocache_headers(); include( get_query_template( '404' ) ); exit; } } add_filter( 'site_url', 'admin_login_site_url', 10, 4); function admin_login_site_url( $url, $path, $orig_scheme, $blog_id) { // 変更後のログインページが存在しなければ何もしない if (!file_exists(ABSPATH.'/'.LOGIN_PAGE)) return $url; if( ($path == 'wp-login.php' || preg_match( '/wp-login\.php\?action=\w+/', $path) ) && (is_user_logged_in() || strpos( $_SERVER['REQUEST_URI'], LOGIN_PAGE) !== false) ) { $url = str_replace( 'wp-login.php', LOGIN_PAGE, $url); } return $url; } add_filter( 'wp_redirect', 'admin_login_wp_redirect', 10, 2); function admin_login_wp_redirect( $location, $status) { // 変更後のログインページが存在しなければ何もしない if (!file_exists(ABSPATH.'/'.LOGIN_PAGE)) return $location; if( is_user_logged_in() && strpos( $_SERVER['REQUEST_URI'], LOGIN_PAGE) !== false ) { $location = str_replace( 'wp-login.php', LOGIN_PAGE, $location); } return $location; } |
上記のソースコードから、1行目の「変更するログインページ名.php」を任意のファイル名に変更し、テーマのfunction.phpに追記します。
次にwp-login.phpのあるディレクトリに「変更するログインページ名.php」のファイルを新規作成し、以下のコードを書きます。
1 2 |
define('LOGIN_KEY', password_hash( 'login', PASSWORD_BCRYPT, array('cost'=>10))); require_once('./wp-login.php'); |
これでWordPressのログインURLが「WPのインストールディレクトリ/変更するログインページ名.php」に変更することができました。
さらに管理画面のセキュリティを強化するなら管理画面のURL(wp-admin/)も変更するとなお良いでしょう。
万が一サーバーに障害が起こった場合や、誤ってデータを削除してしまった場合、すぐに元の状態に普及できるように、FTPやDBの定期的なバックアップを取っておくとよいでしょう。
バックアップには「WPBackUp」のプラグインが便利なのでインストールしましょう。
WordPressの初版を調べたところ2003年5月27日だそうです。
今から10年以上経過しており、現在でも有志の方たちなどの手によって日々バージョンアップしています。
ホームページ制作をしたことのある人なら必ず一度は利用したことはあるのではないでしょうか。
そんなメジャーなWordPress、オリジナルテーマを作る上で便利なプラグインやアクションフックが多く用意されていますが、使い方を知らないと活かせないまま、使いづらく脆弱なセキュリティのホームページになってしまいます。
WordPressのホームページの運用をしている方は一度自身のホームページを見直してみてはいかがでしょうか。