let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

【PHPプログラミング】WordPressのパーツをclass/オブジェクト型で作る(テーマ設定・ぱんくずリスト・meta robots出力)

更新: 2024/03/08 1934文字

今回は、管理人が少しずつ取り組んでる『WordPressのパーツclass/オブジェクト型で作る』という話題を取りあげます。手続き型でちょこちょこ書くよりはめんどくさいんですけど、メリットもそれなりにあると思います。ちょっとずつ取り組んでることもあり未完成な部分もありますが、さっそくコードなども合わせてみていきましょう。

WordPress オブジェクト型って?メリットは?

オブジェクト型というのは『オブジェクト指向プログラミング』で使われる書き方のことです。書いた2024年でも、WordPressのオブジェクト型構築って取り扱っているサイトはあまりないんですけど、Qiitaなどのエンジニア向けのサイトでは、取り組んでいる人もいるみたいです(以下のQiita内の記事も見てみてください、他にもあるかもしれません)。

まだテーマ全体をオブジェクト型にするような設計はできていないけど、管理人がちょっとやってみた感じだと、 こんな感じでクラスやメソッド定義して(headのmeta情報出力するクラスを試しに作りました)・・

『new』でインスタンス化して、その出力メソッドにアクセスみたいな感じになりました。

やってみた結果論として話しますが、管理人的には『〇〇無効』みたいなfunctions.phpのごちゃごちゃを、いくつかクラスにまとめて整理・保守しやすくなるという感じでした。デメリットは手続き型に慣れていると、オブジェクト型に慣れるのに時間がかかる感じでしょうか

管理人がオブジェクト型で作ってみたWordPressのパーツや機能

head内にページタイプで切り替えてmeta robots出力するクラス

上の例にあったmeta robots出力するクラスのコードです。とくに分ける機能もなかったので、__constructを使って、インスタンス化したときは即実行されるようにしました。ただし、中でechoしていないので、フロントで出力するとき『echo $mout->metaindex』のようになっています。

一覧やsingleで、カテゴリやタグ名をぱんくずリストみたいに出力するクラス

お次はカテゴリやタグ名をぱんくずリストみたいに出力するやつです。こういうのですね。これもオブジェクト型にしてこのサイトに実装しました。コードは以下のような感じ。

判定はclass内にいれても良かったかも。内部でしか使わないプロパティ(クラスの外に出さないもの)は、privateで大丈夫です。
また、親カテゴリも表示したい場合は、get_the_category()で取れるオブジェクト『object(WP_Term)』内の["category_parent"]["parent"]も参照するようにします。

functions.phpでブロック停止や不要リンクカット、テーマ設定をまとめたクラス

これは、ネットを探すと、結構やっている人がいる様子でした。WordPressのテーマ設定や不要機能カットなどをfunctions.phpに書いていくとごちゃごちゃしてきますが、それをひとつにまとめるクラスを作成。

『new themeSettingClass();』で実行されます(コンストラクタが動いて各種フックがかかる)。クラス化ということで、フックの書き方が疑似変数$thisみたいに変わっていますが、こうしないとアクセスできないらしいです。一番保守しやすくなってメリットがあったのが、これでした。

あとがき・まとめ

  • WordPressをオブジェクト型にする記事は少ないが、保守しやすくなるなどのメリットはある
  • ぱんくずなどのほか、ブロック停止や不要リンクカット、テーマ設定なども一つのクラスにまとめられる

まとめるとこんなところでしょうか。最近取り組み始めて日が浅いので、まだこの書き方に慣れていませんが、ゆくゆくはテーマ全体もこの形式にしてみたいので、引き続き調査・実装を行っていきます。


【カテゴリ】- PHP
【タグ】- ,

関連記事