0

私が取り組んでいるアプリケーションは、Laravel と Wordpress で構成されています。wordpressデータベースに必要なすべてのデータがあります(必要に応じて追加のプラグインとして)。正しいビューを返すには、laravel コントローラーから wordpress の wpdb に接続できる必要があります。

ただし、ワードプレスのload.phpを含めると

(require_once(<wp root>/wp-load.php)

laravel ページにアクセスすると、次のエラーが表示されます。

Cannot redeclare __() (previously declared in  /www/laravel/helpers.php:24)

これは、$wpdb を使用して DB にアクセスし、コンテンツを取得しようとしているためです。

回避策に関するアイデアはありますか?

4

1 に答える 1

2

問題は、wp-load.phpほとんどのWordPressフレームワークを起動し、WordPressにと呼ばれる関数があること__()です。どうやら、Laravelもそうです。私は次のように単独で起動wpdbしてみました:

include('/path/to/wordpress/wp-includes/wp-db.php');
$mydb = New wpdb('user', 'pass', 'dummydb', 'localhost');
$test = $mydb->get_results("SELECT * FROM {$mydb->posts} LIMIT 5");

ただし、ロードされていないWordPressコードベースの残りの部分で関数を使用するため、未定義の関数エラーがスローされます。つまり$wpdb、関数名の競合がなければ、Laravelを使用することはできません。

あなたは本当に必要ではありませんが$wpdb、少なくとも私はあなたがそうする理由がわかりません。これは、PHPのmysql_*関数のかなり限定されたラッパーにすぎません。それは(マイナーな)便利ですが、それだけです。データベース接続情報がある場合は、ストレートPHPでもほぼ同じことができます。

あなたが使用する必要があるならば、WP_Query私は理解するでしょう。それがすることのいくつかは、手で書くことは非常に苦痛でしょう。

于 2013-01-31T00:58:10.230 に答える