我正在处理的应用程序包括Laravel和Wordpress。我拥有wordpress数据库中所需的所有数据(如果需要,可以作为附加插件)。我需要能够从laravel控制器连接到wordpress'wpdb,以便返回正确的视图。
然而,当我包含wordpress'load.php
时(require_once(<wp root>/wp-load.php)
访问laravel页面时出现以下错误:
Cannot redeclare __() (previously declared in /www/laravel/helpers.php:24)
这是因为我正在尝试使用$ wpdb访问数据库来获取cotents。
关于变通办法的任何想法?
答案 0 :(得分: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
,至少我不知道你为什么会这样做。它不仅仅是fairly limited wrapper around PHP's mysql_*
functions。
这是一个(次要的)便利,但就是这样。如果你有数据库连接信息,你可以用直接的PHP做同样的事情。
如果你需要使用WP_Query
,我明白了。它所做的一些事情将是非常痛苦的手写。