ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

WordPress, WP_Query not foundエラーで使えないのを直す

wordpress image
イラストダウンロードサイト【イラストAC】
の画像をもとに加工しています。

クラスの中で、WP_QueryなどWordPressで用意されているクラスが見つからないエラー(Class ... not found)が出ることがあります。

修正はかんたんです。そしてエラーが起きる原因は、オブジェクト指向から見ればあたりまえ。

PHPのクラスでWordPressのクラスを使う

まず、クラスの中でWP_Queryを使うときこんな感じです。

my-class.php
<?php
namespace MY;

class Sample {
    public function get_posts() {
        $args = [
            'post_status' => 'publish',
            'post_type' => 'post',
            'posts_per_page' => -1,
        ];
        return new WP_Query( $args );
    }
}
main.php
<?php

use MY\Sample as Sample;
$posts = ( new Sample() )->get_posts();
foreach ( $posts as $post ) {
   // 何か処理する
}

これを実行するとエラーが出ちゃいます。

Fatal error: Class 'MY\WP_Query' not found...

パソコンをする人。困った編
なんで?
パソコンをする人。困った編
WordPressで用意されてるクラスでしょ?
パソコンをする人。困った編
見つからないはありえない!

最初はこう思うかもしれません。でもよく見てください。エラーには、

'MY\WP_Query'

って出てます。これは、

namespace MYに属するWP_Query

と認識してるんですね?

もう一回クラスを見てみましょう。

my-class.php
<?php
namespace MY;

class Sample {
    public function get_posts() {
        $args = [
            'post_status' => 'publish',
            'post_type' => 'post',
            'posts_per_page' => -1,
        ];
        return new WP_Query( $args );
    }
}

いました。『namespace MY』が。

オブジェクト指向プログラミングになれてる人はもう分ったでしょう。my-class.phpの中で使われるクラスは、

デフォルトでMYに属している

と認識します。

でも、WP_QueryはWordPressが用意したグローバルな、どこでも使えるクラスなので、MYに属されても困りますね?

どのネームスペースに属しているクラスを使うのか、明示するのが、

use演算子

エラーの原因は、my-class.phpでuseをつかってWP_Queryを指定していないから、デフォルトでMYに属してしまったんですね?

MYに属しているWP_Queryクラスを作っていたらエラーになりません。

でも、クラスがちがうので処理としてはバグです。

自作クラスでのWordPressクラスの使い方

修正はかんたんです。

new \WP_Query( $args );

どのネームスペースにも属してませんよ。というマーク『\』をつけます。

半角英数の『ろ』キーです。

以上です。

my-class.phpでuseを使うなら、

use \WP_Query as WP_Query;

これで明示すれば、

new WP_Query()

と書いてOK。

クラスを書いたphpファイルにnamespaceを使ってないときはエラーになりません。

でも、namespaceを書かないことはオブジェクト指向として不十分なので、これはこれで問題です。

(WordPressはそこらへんがユルいので許されてますが。)

WP_Query以外のクラスでも同じです。

前の投稿
WordPress, 1回のWP_Query実行で全件を取得する
WordPress, PHPの変数をJavaScriptで使う
次の投稿

WordPressの本

post-cta-image

たくさんあるなかで、WordPressの基本が学べる、目的別に学べる本を選びました。

  • WordPressの基本。
  • Webサイト作成から運用まで全体的に学ぶ。
  • かんたんなカスタマイズを学ぶ。
  • 何も分からないところから学ぶ。
  • WordPressからPHPプログラミングを学ぶ。

の5冊です。どうしてもネット上で調べて勉強するのが苦手という人におすすめです。

この内容をモノにすればほかの本は必要ありません。あとは自分の力で、書籍を使わずにインターネット上にある情報だけで学んでいけます。

コメントを残す

*