EC担当者のブログ

EC-CUBEのページ内でWordPressの情報を呼び出す

2011年05月17日

今まではなんとかかんとか自社内でEC-CUBEとWordPressを組み合わせて開発していました。
今回はある案件で外注に開発を依頼するのにどのように実現するかを伝える必要があってまとめたので、一応備忘録として。。。
 

EC-CUBEは2.11.1、WordPressは3.1.2を使用。

最初はEC-CUBE内でWordPressの情報を呼び出すか、
WordPress内でEC-CUBEの情報を呼び出すかに悩みました。

結局、WordPressのページ内でSmartyを使えるようにするのが面倒だったので、EC-CUBE内でWordPressの情報を取得できるようにしました。

① まずはWordPressをEC-CUBEのHTMLディレクトリにインストール。

② DB接続情報の変数名がEC-CUBEと被ってしまうので、
wp-config.phpのDB情報の変数名にプレフィックスを追加。

// ** MySQL 設定 - こちらの情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('WP_DB_NAME', 'データベース名');

/** MySQL データベースのユーザー名 */
define('WP_DB_USER', 'ユーザー名');

/** MySQL データベースのパスワード */
define('WP_DB_PASSWORD', 'パスワード');

/** MySQL のホスト名 */
define('WP_DB_HOST', 'ホスト名');
  

③ wp-includesのload.phpのrequire_wp_db内のDB接続情報の変数名に
プレフィックスを追加する。
↓の場合は WP_ を追加。(DB_NAME → WP_DB_NAMEなど)

/**
 * Load the correct database class file.
 *
 * This function is used to load the database class file either at runtime or by
 * wp-admin/setup-config.php. We must globalize $wpdb to ensure that it is
 * defined globally by the inline code in wp-db.php.
 *
 * @since 2.5.0
 * @global $wpdb WordPress Database Object
 */
function require_wp_db() {
	global $wpdb;

	require_once( ABSPATH . WPINC . '/wp-db.php' );
	if ( file_exists( WP_CONTENT_DIR . '/db.php' ) )
		require_once( WP_CONTENT_DIR . '/db.php' );

	if ( isset( $wpdb ) )
		return;

	$wpdb = new wpdb( WP_DB_USER, WP_DB_PASSWORD, WP_DB_NAME, WP_DB_HOST );
}


④ 対象のEC-CUBEのページのclassの先頭でwp-load.phpを読み込む

require_once '../require.php';
require_once CLASS_EX_REALDIR . 'page_extends/LC_Page_Ex.php';
require_once '../wordpress/wp-load.php';

⑤ で、あとはactionメソッド内でquery_postsやらget_the_contentやらでWordPressの情報を取得し、その情報をSmartyで出力してやればOK。


なんとか動きました。ふぅ。

EC-CUBEのページ内でWordPressの情報を呼び出す | 株式会社エマージはEC-CUBEを使用したECサイト構築をおこなっている東京都新宿区の会社です。PHPなどのシステム開発を得意としていますが、お客様のご予算やプランに合わせた通販事業の提案も高評価を得ています。 その他、ECサイト保守やリスティング広告、アフィリエイトといったインターネットマーケティングの提案や、基幹システム開発、提携企業による通販コンサルティングサービスも提供しております。

ECサイトに関する各種お問い合わせ・ご相談など、お気軽にお問い合わせ下さい。