【ECCUBE3.0.13】ECCUBEトップにWordpress記事一覧を出力し、パラメータを取得してECCUBE内に詳細記事も出力させる方法
大変でした。
でも出来た。
やったこと
ECCUBEトップにWordpress一覧出力
まずはここから。
強引なやり方みたいだけどとりあえず出来るならいいかと。
下記のサイト通りで出来た。
EC-CUBE3.013 WordPressの新着情報をトップページに表示 – うちの子が言うことには
ただ自分で少し改造したので下記にも記載しておく。
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 : <b>php_' . $function . "</b> "; trigger_error($errMsg, E_USER_NOTICE); return NULL; }
Wordpress記事IDのパラメータを取得して、投稿内容をECCUBE内に詳細記事として出力させる
これは出来ないかと思ったけど出来た。
1、概念としてはnewsdetail.twigを普通に管理画面で作り、Twigファイル内から上記トップページに表示したのと同じようにwordpressを呼び出す為のPHPファイルを読みだす。(newsdetail.php)
記載する際にパラメータを付与するが、付与の仕方で詰まった。
下記のように変数をつなげる時は~を使うらしい。
いろいろやったけどこんだけ。。。
でも出来たからいいや。
<!--変数定義--> {% set hoge = 2 %} <!--変数出力--> {{ hoge }} <!--GETパラメータ取得して出力--> {% set p = app.request.get('p') %} <!--パラメータを付与してWP読み込み--> {% set url = app.request.schemeAndHttpHost() ~ '/wp/newsdetail.php?p=' ~ p %} {{ php_file_get_contents(url) }}
2.newsdetail.php
<?php $webroot = $_SERVER['DOCUMENT_ROOT']; require ($webroot.'/wp/wp-load.php'); ?> <?php $newslist = get_posts( array( 'posts_per_page' => 1 //表示する記事数 )); foreach( $newslist as $post ): setup_postdata( $post ); ?> <?php // 記事のカテゴリー情報を取得する $cat = get_the_category(); // 取得した配列から必要な情報を変数に入れる $cat_name = $cat[0]->cat_name; // カテゴリー名 $cat_slug = $cat[0]->category_nicename; // カテゴリースラッグ //Advancedカスタムフィールド取得 $date = get_field('date');//日時 //パラメータが渡された時のみ変数にパラメータとなる数字格納 if(isset($_GET['p'])) { $para = $_GET['p']; } //投稿IDを指定 $post = get_post($para); //指定したIDの本文を格納 $post_content = $post->post_content; ?> <!-- キービジュアル --> <div id="keyVisual" class="panel"> <div class="title pcClass"> <figure> <h2> <img src="/assets/img/pc/news/h2_title.png" alt="NEWS"> </h2> </figure> </div> </div> <!-- メイン --> <section id="main_contents"> <div class="innerEC"> <div id="pankuzu"> <span> <a href="../">TOP</a> </span> <span class="bar"> / </span> <span> NEWS一覧 </span> </div> <div id="main_inner"> <!-- NEWS --> <section id="newsall"> <div class="inner"> <h3> <img src="/assets/img/pc/h2_news_top.png" alt="NEWS"> </h3> <?php echo $post_content;?> <ul> <li><p><?php echo $date; ?></p></li> <li><div class="cate <?php echo $cat_slug ?>"><?php echo $cat_name; ?></div> </ul> <?php endforeach; wp_reset_postdata(); ?> </div> </section> </div> </div> </section>