コピペですぐ使えるワードプレスのfunction.php記述法:初級編
おはようございます。継続の錬金術士なおキーヌです。
WordPressのテーマにあるfunction.phpはご存知でしょうか?
プログラミングに慣れていなくて1回でも弄ったことがある人は、
ミスってブログが真っ白になった経験があるのではないでしょうか?
このfunction.phpはブログテーマに利用する関数や
Wordpressコアファイルの上書きだったり色々弄ることが出来るファイルです。
PHPとWordpressの知識が必要になるので、何も知らない状態だと
正しい書き方をしなければエラーを吐いてWordpressが真っ白になってしまいます。
function.phpで主に何が出来るのかというと
WordPressの出力してる無駄なソースコードを出力しないようにしたり、
Wordpressが持っている機能を呼び出したり管理画面に機能を追加したりできます。
機能追加に関しては少々難易度が高いため、今回は初級編ということで
コピペでも問題なく使えるコードを紹介します。
ソースコードからWordpressのバージョンを消してみよう
ソースコードを変更する前に必ずバックアップを取るようにしてください!!
バックアップ取り忘れで前の状態に戻れなくなっても責任は負えません。
と警告していますが、1行追加するだけなので余程変なことをしない限りは問題は出ないはずです。
それでは早速Wordpressのバージョン情報をソースコードから消してみましょう。
WordPressの管理画面のサイドメニューバーから
「外観」→「テーマの編集」を選択してください。
ここで警告が出ますが、一旦無視して大丈夫です。
本当はFTPから弄った方がいいのですが、function.phpにコピペするだけなので大丈夫です。
もし変なところまで消して真っ白になってしまったらWordpressの管理画面に入られなくなります。
その際はレンタルしてるサーバーのFTPからfunction.phpを直接編集してください。
画面右側にテーマファイル一覧が表示されているはずです。
一番上から2番目にある「テーマのための関数」という項目をクリックしてください。
編集する前にメモ帳でもなんでもいいのでテキストエディタを開いてください。
そしてfunction.phpをすべてコピーしてバックアップを取りましょう。
もし記述ミスをして真っ白になってしまったとき、そのバックアップファイルがあれば
FTPにアクセスしてバックアップで上書きすれば元に戻ります。
では、実際にコードを追記してみましょう。
function.phpのソースコードの一番上に「<?php」とありますので
その次の行に下記のコードをコピーして貼り付けて保存してください。
remove_action('wp_head', 'wp_generator');
記述が終わったら、ファイルを更新してください。
問題なく更新出来たら、自分のブログにアクセスしてソースコードを確認してみましょう。
アクセスして画面上で右クリックをしてソースコードを表示してみてください。
headタグ内にあったWordpressのバージョン情報が消えています。
え?最初になんて書いてあったかわからないから消えたかわからない?
じゃあ、今度は先ほど入れたコードをコメントアウトして更新して
バージョン情報が記載されるかテストしてみましょう。
// remove_action('wp_head', 'wp_generator');
先ほどコピペしたソースコードの前にスラッシュを半角で2回打つと
PHP言語ではコメントアウト化され、そのコードは無効化されます。
更新したら、もう一度ソースコードを見てください。
下記のようなmetaタグがあればコードを無効化できています。
<meta name="generator" content="WordPress 〇.〇.〇" />
〇は自分のWordpressのバージョンの数値です。
そしてコメントアウトを解除してもう一度更新して消えているかも確かめるとよくわかると思います。
WordPressのバージョン表記の意味
このバージョン情報は何かと言うと……
特に意味はありません!
じゃあなんでバージョンなんか表示させてんだと思うかもしれませんが
開発者になればその気持ちはわかると思います。
折角無料で高性能CMSを使わせてくれているんですから
製作者に感謝して表記すべきだと思いますが、私はしません。
なぜなら、自分のWPバージョンをばらしていることでクラッキングの対象にされる可能性があるので
セキュリティをアップしたいのであれば消す以外ありえないですね。
他にもまだある余計なソースコードを消す方法
他の要らない表記を消す前にもう一度WordPressのバージョン表記を消したコードを見てみましょう。
remove_action('wp_head', 'wp_generator');
これを少し解説すると
Wordpressが用意しているremove_action関数というものを呼び出しています。
そして、関数には引数を与えられるので、remove_action関数には「wp_head」と「wp_generator」という
引数を与えることによって、wp_headの中にあるwp_generatorをremove(除外)するということになります。
この引数の「wp_head」と「wp_generator」の部分を変えることで色々出来ます。
remove_action関数がどういう仕組みになっているのかは、Wordpressのコアファイルのソースコードを見るか
公式リファレンスを見れば乗っていると思いますので興味があれば覗いてください。
それでは私が実際に使っているコピペで使えるremove_actionのリストを公開します。
コメント付きなので何をしているかがある程度わかると思います。
/* 外部投稿ツール設定削除 */
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'rsd_link' );
/* WPのバージョン削除 */
remove_action('wp_head', 'wp_generator');
/* URLの正規化 canonicalの出力 自力で出す場合は使用 */
remove_action('wp_head', 'rel_canonical');
/* ショートリンクの削除 */
remove_action('wp_head', 'wp_shortlink_wp_head');
/* 絵文字削除 */
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
/* コメントフィード削除 */
remove_action('wp_head', 'feed_links', 2);
remove_action( 'wp_head', 'feed_links_extra', 3);
/* wp-json削除 */
remove_action('wp_head','rest_output_link_wp_head');
remove_action('wp_head','wp_oembed_add_discovery_links');
/* adminバーの削除 */
add_filter( 'show_admin_bar', '__return_false' );
/* DNSプリフェッチ設定の削除 */
add_filter( 'emoji_svg_url', '__return_false' );
/* jquery削除 */
function my_delete_local_jquery() {wp_deregister_script('jquery');}
add_action( 'wp_enqueue_scripts', 'my_delete_local_jquery' );
/* 自動保存機能停止 */
function autosave_off() { wp_deregister_script('autosave'); }
add_action('wp_print_scripts', 'autosave_off');
/* 絵文字関連停止 */
function disable_emoji() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
}
add_action( 'init', 'disable_emoji' );
「add_filter」や「add_action」が等ありますが
名前で何をしているのか予想を付けてみると勉強になります。
気になればWordpress公式リファレンスを見ましょう。
1つ1つ解説してたら記事が終わらないのでコメントで何をしているかを理解してもらえれば幸いです。
何が変わったかはコメントアウトして関数を無効化すればチェックが出来ます。
中にはWordpressの機能を一部停止しているので、その機能を使っているのであれば使わなくてもいいです。
辞めてほしいのは脳死でコピペして使うことです。
コピペして使えるっていったじゃないか嘘つき!と思われるかもしれませんが
何をしているか理解した上でコピペして使ってほしいということです。
私は変態なのでWordpressの便利な機能(お節介機能ともいえる)のが邪魔なので
自動保存機能を切ったり金輪際使わないjqueryの出力を消したりしています。
人によってはどちらも必要な場合もありますので
勉強もそうなのですが真似るときは何をしているか考えながらやらないと何も意味がありません。
function.phpはともだち、こわくないよ
ヘタにいじるとすぐにスネてWordpressを真っ白にしちゃうfunction.php君。
真っ白になるのはPHPエラーが発生しているからが大体の理由です。
function.phpはソースコードを消したり付けたりするだけではなく
管理画面に便利な機能を追加したり、Wordpress元々の処理を上書きしたり元々の処理に新しく処理を追加したり
様々なことが出来て便利なのですが、PHPの基礎を知っておかないと真っ白になりやすいです。
そしてその大抵のミスは日本語で言う句点にあたる「;」を記述し忘れてたり
PHP宣言の外にPHPコードを書いたり、カッコの閉じがなかったり大体しょうもないことで起きています。
頑張ればパンくずリストを実装したり、ページネーションを実装したりも可能です。
そんなのプラグイン入れたら一発じゃんって思うかもしれません。
はい、その通りです。
しかし其の1つの機能のためだけにプラグインをどんどん増やしていくとWordpressが重たくなります。
WordPressが重たくなる理由は様々ですが後日その重くなる理由を記事にしますので
自分のWordpress、最近重たいなって思うようになったら見てください。
ブログ毎日更新は53日目。
ブログネタが尽きてきました。
技術ネタが記事にあがったらネタ切れ起こしたんだなって思ってください(笑)