バージョン選択

フォーラム

メニュー

オンライン状況

80 人のユーザが現在オンラインです。 (73 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 80
もっと...

サイト内検索

質問 > フロント機能 > コントローラーでWordPressのクラスをnewしたい!

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
haru0421
投稿日時: 2020/5/29 16:25
対応状況: −−−
半人前
登録日: 2020/5/25
居住地:
投稿: 11
コントローラーでWordPressのクラスをnewしたい!
商品詳細ページでwordpressの記事一覧を表示するためにdetailアクションで以下のように記述したところ、WordPressのクラスをnewしたところでエラーになりました。


    //wordpressのメソッドをロード
    require_once($_SERVER['DOCUMENT_ROOT'] . '/blog/wp-load.php');

    $args = array(
      'post_type'   => 'post',
      'post_status' => 'publish',
    );

    //記事を取得するためにWordPressのクラスをnewする
    $the_query = new WP_Query($args);
    ↑ここでエラーになる



この方法と同じ方法をEC-CUBEの外でやったところnewは問題なく行えました。
EC-CUBE内でクラスをnewするには何か登録が必要なのでしょうか?

どうぞよろしくお願いいたします。

エラーログは以下です。

[2020-05-29 15:54:38] front.ERROR [st58voktkdac0kv7bg4i4nh5gk] [8d90b70] [anon.] [Eccube\Log\Logger:log:66] - システムエラーが発生しました。 ["Attempted to load class \"WP_Query\" from namespace \"Eccube\\Controller\".\nDid you forget a \"use\" statement for another namespace?","/Users/Haru/GoogleDrive/works/external_matters/user/example/source/www/public_html/src/Eccube/Controller/ProductController.php",270,"#0 /Users/Haru/GoogleDrive/works/external_matters/user/example/source/www/public_html/vendor/symfony/http-kernel/HttpKernel.php(151): Eccube\\Controller\\ProductController->detail(Object(Symfony\\Component\\HttpFoundation\\Request), Object(Eccube\\Entity\\Product))\n#1 /Users/Haru/GoogleDrive/works/external_matters/user/example/source/www/public_html/vendor/symfony/http-kernel/HttpKernel.php(68): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#2 /Users/Haru/GoogleDrive/works/external_matters/user/example/source/www/public_html/vendor/symfony/http-kernel/Kernel.php(200): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#3 /Users/Haru/GoogleDrive/works/external_matters/user/example/source/www/public_html/index.php(76): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#4 {main}"] [GET, /products/detail/3, ::1, http://example:8888/, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36]
sw_sn
投稿日時: 2020/5/31 0:03
対応状況: −−−
常連
登録日: 2018/5/25
居住地:
投稿: 49
Re: コントローラーでWordPressのクラスをnewしたい!

WP_Queryを個別にrequireしてみてはいかがでしょうか?

require_once "Wordpressを設置しているパス/wp-includes/class-wp-query.php";

haru0421
投稿日時: 2020/5/31 9:35
対応状況: −−−
半人前
登録日: 2020/5/25
居住地:
投稿: 11
Re: コントローラーでWordPressのクラスをnewしたい!
sw_snさん
回答いただきありがとうございます。

WP_Queryを個別にrequireして見ましたが結果は変わらず、ClassNotFoundExceptionとなってしまいました。

不思議です。。。
468
投稿日時: 2020/6/1 11:03
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: コントローラーでWordPressのクラスをnewしたい!
コントローラークラスにはnamespaceが記述されていますので
new /WP_Query()で指定する必要があるのではないでしょうか?
(名前空間の指定の問題ではないかと思いました)


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

haru0421
投稿日時: 2020/6/1 11:38
対応状況: 解決済
半人前
登録日: 2020/5/25
居住地:
投稿: 11
Re: コントローラーでWordPressのクラスをnewしたい!
468さん
回答ありがとうございます。

指摘していただいた通りnew \WP_Query()で無事newをすることができました。
名前空間が設定されているのでそこを疑うべきでした。。。

とても勉強になりました。
ありがとうございました
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,856名です
総投稿数は109,989件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1291
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.