0

我正在开发的应用程序由 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 来访问数据库以获取内容。

关于解决方法的任何想法?

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,至少我不知道你为什么会。它只不过是一个相当有限的 PHPmysql_*函数包装器。这是一个(次要的)方便,但仅此而已。如果你有数据库连接信息,你可以用直接的 PHP 做同样的事情。

如果你需要使用WP_Query我会理解的。手写的一些东西会非常痛苦。

于 2013-01-31T00:58:10.230 回答