developers blog

Wordpress のテーマを使用するときの設定 (functions.php)

はじめに

Wordpress のテーマを作成する時や、他のテーマを使用するとき、html や管理画面に不要な情報が表示されることがあります。ここでは functions.php を変更することで、設定できることをまとめます。。

環境

  • WordPress : バージョン 4.7.3

wp_head 関数で出力される不要なコードを削除する

wp_head 関数を使用すると、head 内にさまざまなタグが出力されます。必要なものばかりだといいですが、不要なタグも出力されるため、そのままでは気持ちが悪いので不要なタグは削除してしまいます。

generator を非表示にする

使用している Wordpress のバージョンが以下のように表示されます。

1<meta name="generator" content="WordPress 4.7.3">

バージョンを表示する必要はありません。バージョンを知らせることで、バージョン固有のバグがあった場合にピンポイントで狙われる危険性があるため、セキュリティ的にも functions.php 内に以下のように書くことで、表示されないようにしておきます。

functions.php
1// generator非表示
2remove_action('wp_head', 'wp_generator');

EditURI を非表示にする

RSD(Really Simple Discovery) を使用する場合、RSD ファイルを取得するための URL が表示されます。

1<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://<url>/xmlrpc.php?rsd">

外部ツールを使用する場合以外は必要がないので、functions.php 内に以下のように書くことで、非表示にします。

functions.php
1// EditURI非表示
2remove_action('wp_head', 'rsd_link');

wlwmanifest を非表示にする

Windows Live Writer 用のマニフェストの場所が出力されます。

1<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://<url>/wp-includes/wlwmanifest.xml">

これも表示しておく必要がないので、functions.php 内に以下のように書くことで非表示にします。

functions.php
1// wlwmanifest非表示
2remove_action('wp_head', 'wlwmanifest_link');

ショートリンクを非表示にする

記事のショートリンク <url>/?p=ID が出力されます。

1<link rel='shortlink' href='http://<url>/?p=11'>

ショートリンクでのアクセスの必要性がない場合は、非表示にします。

functions.php
1// shortlink非表示
2remove_action('wp_head', 'wp_shortlink_wp_head');

oEmbed を非表示にする

記事にコンテンツを埋め込む機能である、Embed のための仕組みです。

1<link rel='https://api.w.org/' href='http://<url>/wp-json/'>
2<script type='text/javascript' src='http://<url>/wp-includes/js/wp-embed.min.js?ver=4.7.3'></script>

oEmbed を利用しない場合は、以下の内容を functions.php に書くことで非表示にします。

functions.php
1// oEmbed非表示
2remove_action('wp_head', 'rest_output_link_wp_head');
3remove_action('wp_head', 'wp_oembed_add_discovery_links');
4remove_action('wp_head', 'wp_oembed_add_host_js');

絵文字を非表示にする

絵文字を使用しない場合は、以下のコードを追加して非表示にしておきます。

function.php
1// 絵文字非表示
2remove_action('wp_head', 'print_emoji_detection_script', 7);
3remove_action('admin_print_scripts', 'print_emoji_detection_script');
4remove_action('wp_print_styles', 'print_emoji_styles' );
5remove_action('admin_print_styles', 'print_emoji_styles');

管理画面の設定

使用しない管理画面のメニューを非表示にする

Wordpress の管理画面のメニューですが、記事を投稿するだけの場合でもそのままでは全てのメニューが表示されてしまいます。そのため、必要のない機能のメニューを非表示にして管理画面をスッキリさせます。 非表示にする場合は以下の内容を functions.php に追加します。
※表示させたいメニューがある場合はその行を削除するかコメントアウトしてください。
※実際にページにアクセスできないわけでなく、あくまでメニューを非表示にしているだけです。

functions.php
1// メニューの非表示
2function remove_admin_menu() {
3    global $menu;
4
5    unset($menu[2]);    // ダッシュボード
6    unset($menu[5]);    // 投稿
7    unset($menu[10]);   // メディア
8    unset($menu[20]);   // 固定ページ
9    unset($menu[25]);   // コメント
10    unset($menu[60]);   // 外観
11    unset($menu[65]);   // プラグイン
12    unset($menu[70]);   // ユーザー
13    unset($menu[75]);   // ツール
14    unset($menu[80]);   // 設定
15}
16add_action('admin_menu', remove_admin_menu);

ユーザーの権限グループにより表示を切り替える場合は current_user_can() 関数を使用します。以下の例は管理者グループ以外は非表示にする場合です。

functions.php
1function remove_admin_menu() {
2    global $menu;
3
4    // 管理者以外は非表示
5    if (!current_user_can('administrator')) {
6        unset($menu[2]);    // ダッシュボード
7        unset($menu[5]);    // 投稿
8        unset($menu[10]);   // メディア
9        unset($menu[20]);   // 固定ページ
10        unset($menu[25]);   // コメント
11        unset($menu[60]);   // 外観
12        unset($menu[65]);   // プラグイン
13        unset($menu[70]);   // ユーザー
14        unset($menu[75]);   // ツール
15        unset($menu[80]);   // 設定
16    }
17}
18add_action('admin_menu', remove_admin_menu);

ダッシュボードの表示を変更する

ダッシュボードに表示されているウェルカムパネルとウィジェットは必要ないので非表示にします。functions.php 内に以下の内容を追記します。

functions.php
1// ダッシュボードのウェルカムパネル非表示
2remove_action('welcome_panel', 'wp_welcome_panel');
3
4// ダッシュボードのウィジェット非表示
5function remove_dashboard_widget() {
6    // 概要
7    remove_meta_box('dashboard_right_now', 'dashboard', 'normal');
8    // アクティビティ
9    remove_meta_box('dashboard_activity', 'dashboard', 'normal');
10    // クイックドラフト
11    remove_meta_box('dashboard_quick_press', 'dashboard', 'side');
12    // WordPressニュース
13    remove_meta_box('dashboard_primary', 'dashboard', 'side');
14    
15}
16add_action('wp_dashboard_setup', 'remove_dashboard_widget');
17
18// 「WordPress のご利用ありがとうございます。」非表示
19add_filter('admin_footer_text', '__return_false');

管理バーの設定

ログイン中サイト上部に表示される管理バーを非表示にするため、functions.php に以下の内容を追記します。

functions.php
1// 管理バーの非表示
2add_filter('show_admin_bar', '__return_false');

管理バーの項目を非表示にする

管理画面上部の管理バーにある不必要な項目を非表示にします。functions.php に以下の内容を追記します。

functions.php
1// 管理バーの項目非表示
2function remove_admin_bar_menu($wp_admin_bar) {
3    // WordPressロゴ
4    $wp_admin_bar->remove_menu('wp-logo');
5    // コメント
6    $wp_admin_bar->remove_menu('comments');
7    // 新規
8    $wp_admin_bar->remove_menu('new-content');
9    // プロフィール
10    $wp_admin_bar->remove_menu('user-info');
11    // プロフィール編集
12    $wp_admin_bar->remove_menu('edit-profile');
13}
14add_action('admin_bar_menu', 'remove_admin_bar_menu', 201);