从laravel控制器访问wpdb(wordpress数据库)

时间:2013-01-30 22:15:22

标签: php wordpress laravel

我正在处理的应用程序包括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。

关于变通办法的任何想法?

1 个答案:

答案 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,我明白了。它所做的一些事情将是非常痛苦的手写。