【Wordpress】PHPにおけるクラスとメソッド、オブジェクトなどのまとめ

※本ブログの目的は個人の備忘録であり、コードは参考用として掲載しています。
実際に使用される際は、ご自身の環境で十分に動作確認を行ってください。
コードの利用によって生じたいかなる問題についても責任を負いかねますので、あらかじめご了承ください。

WordPress のテーマやプラグインを開発していると、「この機能はどうやって呼び出すのか?」や「どうやって安全にデータを扱うのか?」と悩む場面があります。

こうしたときに役立つのが、クラスとメソッドです。クラスは「設計図」、メソッドは「その設計図が持つ機能」と考えるとイメージしやすいでしょう。

たとえば、投稿やユーザー、プラグインが提供するデータに安全にアクセスしたり操作したりする際、クラスとメソッドを理解しておくと効率的です。

本記事ではまずクラス・メソッドの基本を簡単に紹介し、その後 WordPress 標準や主要プラグインの具体例を示します。これらを理解することで、WordPress やプラグインでの開発・実装がよりスムーズになります。

クラスとオブジェクト

クラス(Class)

クラスはデータや機能をまとめた「設計図」などと言われます。プロパティとメソッドをまとめて定義します。

class MyClass {
    public $name; // プロパティ

    public function sayHello() { // メソッド
        echo "こんにちは、" . $this->name;
    }
}

オブジェクト(Object)

クラスを元に実体化されたものがオブジェクトです。new 演算子で生成します。

実際の処理やデータ操作はオブジェクトを通じて行います。

$user = new MyClass(); // オブジェクトの作成
$user->name = '太郎';
$user->sayHello(); // こんにちは、太郎(メソッドを呼び出して動作)

プロパティとメソッド

  • プロパティ(Property):オブジェクトの状態を保持する変数
  • メソッド(Method):オブジェクトの動作を定義する関数

$name はデータ(プロパティ)、sayHello() は機能(メソッド)です。オブジェクト $user が持つデータに応じてメソッドが動作します。

クラスやメソッドを理解する意義

クラスやメソッドは単に便利な仕組みというだけでなく、開発者が「安全に、そして効率よく機能を扱えるように」という意図を込めて提供されています。

そのため、何かを実装するときには、まず WordPress などが提供しているクラスやメソッドに目的に合ったものがないかを確認することが重要です。

既に用意されている仕組みを活用することで、余分なコードを書く手間を省けるだけでなく、安全性や保守性の高い実装につながります。

具体的には、クラスやメソッドを理解することで次のようなメリットがあります。

  • 同じ処理をまとめて使い回せるため 再利用性 が向上
  • 機能をクラス単位で整理できるため 保守性 が高まる
  • 権限チェックやエラー処理を統一して扱えることで 安全性 が確保
  • 外部プラグインが提供するクラスやメソッドを正しく活用することで 連携作業も効率的

WordPress 標準クラスでのメソッド活用例

投稿やページを取得する WP_Query

$query = new WP_Query([
    'post_type' => 'post',
    'posts_per_page' => 5,
]);

while ($query->have_posts()) {  // メソッド: ループ継続確認
    $query->the_post();         // メソッド: 投稿データをセット
    echo get_the_title() . '<br>';
}
wp_reset_postdata();
  • have_posts() はループが続くかを返すメソッド
  • the_post() は内部データを次の投稿に切り替えるメソッド

メソッドを呼ぶことで、オブジェクトが持つ内部データを操作できます。

ユーザー情報や権限を扱う WP_User

$user = wp_get_current_user(); // 自動的に WP_User のインスタンスを生成
if ($user->has_cap('edit_posts')) { // メソッド: 権限チェック
    echo "投稿編集可能";
}
  • has_cap() はユーザーが特定の権限を持つかを判定するメソッド

エラー情報を扱う WP_Error

$error = new WP_Error();
$error->add('login_failed', 'ログインに失敗しました');

foreach ($error->get_error_messages() as $message) {
    echo $message . '<br>';
}

wordpressでは、他にも様々なクラスが提供されています。

WordPress Developer Resources – クラスリファレンス

WordPress コアで定義されているすべてのクラスが一覧化されています。各クラスの説明、プロパティ、メソッド、使用例などが詳細に記載されており、開発時に目的のクラスを探す際に非常に役立ちます。

プラグインクラスでのメソッド活用例

プラグインもオブジェクトとメソッドの組み合わせで情報を安全に取得・操作しています。

Yoast SEO

$yoast = WPSEO_Frontend::get_instance();
$title = $yoast->get_content_title(); // メソッド: SEOタイトルを取得
echo esc_html($title);

Contact Form 7

$form = WPCF7_ContactForm::get_instance(123);
$mail = $form->prop('mail'); // メソッド: フォーム情報を取得
echo esc_html($mail['recipient']);

参考