1. HOME
  2. B'scre8
  3. 【EC-CUBE3】EC-CUBE3にwordpressのブログ記事一覧を表示する方法
B'scre8

【EC-CUBE3】EC-CUBE3にwordpressのブログ記事一覧を表示する方法

こんにちは。
デザイナーの野尻です。
今回はEC-CUBE3にwordpressの記事一覧を表示するやりかたについて、備忘録も兼ねて紹介したいと思います。
意外と大変でした。

【参考にしたページ】
①ECサイトにブログ追加(EC-CUBE3とWordPressの連携)
https://b-risk.jp/blog/2019/09/eccube3_wordpress/

②EC-CUBE3.013 WordPressの新着情報をトップページに表示
https://goweb.jp/stblog4/2017/01/55/

EC-CUBEのhtaccessに「フォルダ以下をEC-CUBEの直接管理下から外す」記述を追加

まず参考サイト①から引用となります。
サーバ上にEC-CUBEとwordpressをそれぞれインストールしていることが前提となります。
EC-CUBEのフレームワークが割と強めなため、普通に「wordpress」というフォルダを作ってそこにWordPressを置いても動きません。
共存のために、EC-CUBE側の「.htaccess」で「wordpress」フォルダ以下をEC-CUBEの直接管理下から外す作業が必要です。
以下のように変更します。






...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpe?g|css|ico|js|svg)$ [NC]
RewriteRule ^(.*)$ index.php [QSA,L]
...

  ↓
...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpe?g|css|ico|js|svg)$ [NC]
RewriteCond $1 !^(wordpress/)
RewriteRule ^(.*)$ index.php [QSA,L]

この下準備が必要です

twigの中で強引にPHPの関数を頭に「php_」を入れることで使えるように

以下参考サイト②から引用(一部調整)しています
1.「src/Eccube/Twig/Extension/EccubeExtension.php」の「public function getFunctions()」に以下を追記






new \Twig_SimpleFunction('php_*', array($this,'phpFunctions'),array('is_safe' => array('html'))),

2.続いて「class EccubeExtension extends \Twig_Extension」内に以下を追記






public function phpFunctions()
    {
        $arg_list = func_get_args();
        $function = array_shift($arg_list);
 
        if(is_callable($function)){
            return call_user_func_array($function, $arg_list);
        }

        $errMsg = 'Called to an undefined function : php_' . $function . " ";
        trigger_error($errMsg, E_USER_NOTICE);
        return NULL;
    }

3.「wordpress」フォルダの直下に、以下のような内容の「news.php」ファイルを作成








4.EC-CUBE内で新着情報一覧を掲載したい任意の箇所に下記のようなソースを追加






{{ php_file_get_contents('http://ドメイン名/wordpress/news.php') }}

これでEC-CUBEのテンプレ上にwordpressの記事一覧を表示することができるようになる(はず)
EC-CUBEだけだと、お知らせ周りの周知が意外と不便だったりします。
wordpressと連携させることで、CMSとしてより使いやすくなるかと思います。