functions.phpだけでどこまでWordPressを魔改造できるか試してみた

この記事でやること

プラグインは使いません。

functions.php に追記するだけ で、どこまで WordPress を制御できるか試します。

やることはこの3つです。

  • 管理画面メニューを削除する
  • 自動保存(autosave)を無効化する
  • ログイン画面をカスタマイズする

※ すべて テーマ側の functions.php に記述します。

管理画面メニューを削除する

目的

  • クライアントや非エンジニアに余計な項目を触らせない
  • 管理画面をシンプルにする

実装コード

/**
 * 管理画面メニューを非表示にする
 */
function remove_admin_menus() {

    remove_menu_page('edit.php');              // 投稿
    remove_menu_page('edit-comments.php');     // コメント
    remove_menu_page('tools.php');              // ツール
    remove_menu_page('options-general.php');   // 設定

}
add_action('admin_menu', 'remove_admin_menus');

ポイント

  • 権限管理ではなく見た目制御
  • 本気の制限は「権限」でやる
  • これは「事故防止」用途

自動保存(autosave)を無効化する

目的

  • 編集中に勝手に保存されるのがストレス
  • Gutenberg使用時の意図しない競合回避

実装コード

/**
* 自動保存を無効化
*/
function disable_autosave() {
wp_deregister_script('autosave');
}
add_action('wp_print_scripts', 'disable_autosave');

補足

  • 下書き保存は手動で可能
  • クラシック/ブロック両方に効く
  • 自己責任だが、個人ブログなら快適

ログイン画面をカスタマイズする

ロゴを差し替える

/**
* ログイン画面のロゴ変更
*/
function custom_login_logo() {
?>
<style>
body.login #login h1 a {
background-image: url('<?php echo get_template_directory_uri(); ?>/images/login-logo.png');
background-size: contain;
width: 100%;
}
</style>
<?php
}
add_action('login_enqueue_scripts', 'custom_login_logo');

ロゴリンク先を変更する

/**
* ログインロゴのリンク先変更
*/
function custom_login_logo_url() {
return home_url();
}
add_filter('login_headerurl', 'custom_login_logo_url');

ロゴのtitle属性を変更する

/**
* ログインロゴのtitle変更
*/
function custom_login_logo_title() {
return get_bloginfo('name');
}
add_filter('login_headertext', 'custom_login_logo_title');

functions.php魔改造で感じたこと

  • 意外とできる
  • プラグイン入れる前に、まず functions.php を疑うべき
  • 小規模サイト・個人ブログなら十分すぎる

ただし、

  • 影響範囲が広い
  • テーマ変更で消える
  • 管理が属人化しやすい

という弱点もあります。

関連記事

自分だけの筋トレアプリを作ってみよう! ~インターバルタイマー機能追加編~

自分だけの筋トレアプリを作ってみよう! 〜アプリ開発の楽しさと挑戦〜

結論:functions.phpは「軽いナイフ」

  • 小さく切るには最強
  • 振り回すと危険
  • 「ちょっと変えたい」には最適

プラグインを探す前に、

まず functions.php で 5 分考える。

これくらいの距離感が一番ちょうどいいです。

本日はここまで。では、また次の記事でお会いしましょう。

おすすめの記事