【functions.phpの肥大化対策】条件分岐で読みわける

現在制作中のフリーガにてプラグイン0化計画を推進中なため(無理無理(-。-)y-゜゜゜)、やたらとfunction.phpに書き込んでいたら500行近くになっちゃいました。

2015-12-02 (2)

 

ファイルサイズだけを見ると15KBちょっとなので大したことがないように感じられますが、ファイルサイズ云々よりも実際に走るプログラムの処理負荷が気になります。

functions.phpを分けて条件分岐させる

ちなみにググっても思い通りの情報を得られなかったため、我流となっています。なので自己責任でお願いします。

プログラム書いてれば誰でも思いつくシンプルな手法です。

function.phpからfunction_sub_admin.phpを呼び出す

ファイル名はなんでも良いですがfunction_sub_admin.phpとしておきました。

function_sub_admin.phpには管理画面でのみ呼び出したい内容を記述します。

これを単純にfunction.phpから呼び出したい場合は以下の1行を記述するだけで内包できます。

[php]include( get_template_directory().’/function_sub_admin.php’ );[/php]

 

 

フォルダを分けて管理したければ/sub/function_sub_admin.phpとかにします。

 

これだと分けただけで意味ないですね。

if (is_admin() ) { }に入れてやる

function.phpの分割自体は最初からやっていたので、今回やりたいことは肥大化によるパフォーマンス低下への対策です。

考えるまでもなく以下の方法を思いつきました。管理画面でのみ読み込む設定です。

[php]if (is_admin() ) {include( get_template_directory().’/function_sub_admin.php’ );}[/php]

 

ふむ・・・ちゃんと動いてるな。

この方法ならプラグイン0化計画のメリットを十分に活かせそうです。

(だから無理だって(;´・ω・)buddypressトカSocial Loginトカ・・・)

if ( !is_admin() ) { }をさらに追加

『!マーク』でis_admin以外を指示してやれば、常に読み込むfunction.php、管理画面でのみ読むfunction_sub_admin.php、管理画面以外でのみ読むfunction_sub_noadmin.phpに分けてやることができます。当初はis_pageとかも追加してみたのですが、わけが解らなくなってきたし、あんまり分けると逆に遅くなりそうなので、この3パターンが丁度良いことにします。

function.phpはこんな感じです。

[php]if (is_admin() ) {
//管理画面用
include( get_template_directory().’/function_sub_admin.php’ );
}
if ( !is_admin() ) {
//管理画面以外用
include( get_template_directory().’/function_sub_noadmin.php’ );
}
・・・あとは常に読み込むコードを通常通り記述
[/php]

 

うむ・・・ちゃんと動いたお。

こいつはプラグイン使うよりも柔軟で良いじゃないか(*‘∀‘)

おまけ:function.phpを管理者レベルでわける

肥大化とはちょっと違うかもだけど使いたいときはありますね。

[php]function level_ten() {
if (!current_user_can(‘level_10′)) {
include( get_template_directory().’/functions_levelten.php’ );
}
}
add_action(‘init’, ‘level_ten’);[/php]

まとめ

管理画面用のコードばかりだったので実際に効果を確認できました。

ちょっと前までプラグインの改造(というよりはphp7用の修正)をよくやっていたのですが、『プラグインを改造するぐらいならfunction.phpで管理した方が楽かもなぁ』という発想で、プラグインを少しずつ減らしています。(当サイトは扱いが雑なのでプラグイン使いまくりっす)

プラグインは入れた瞬間から使えて便利なんですが、作者さんの更新が続くとは限りませんし、function.phpで条件分岐しながら呼び出した方がサーバー負荷に対するメリットもあるようなので、大事なサイトを扱うときは『なるすく』でいこうと思います。

最近忙しくてフリーガの製作が止まっていたけど、最終段階まできているので頑張りますお(‘ω’)ノ

 -

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

同じ分類

MyISAMのInnoDB変換時にエラーで出来ないのを回避

  とりあえずSSL化しても問題ないように運営しながら管理画面のみSSLで運用することに決めました。htt〚…続き〛

カスタム投稿を大活用:新着に含める、月別アーカイブをリスト表示、タクソノミーのタグクラウド等々・・・

ここではカスタム投稿(カスタムポストタイプ)を使って、それらしいサイトを構築します。 例えば新着記事の中にカスタム投〚…続き〛

マルチサイトでデータベースを分離した方法(SharDB)

今回はXサーバーでマルチサイトを構築したときのデータベース分割方法をご紹介します。 いや、紹介すると言うよりは恥を忍〚…続き〛

【多言語サイト構築】簡単でプラグインに依存しない方法

WPMLとBogoとqTranslate(mqTranslate,zTranslate)を試した結果、Multisi〚…続き〛

wordpressのマルチサイトで【参加サイトに表示されない】理由は簡単なミス

それは、Multisite Language Switcherを使う為にマルチサイトを構築するときのことでした。 &〚…続き〛

G+