gpt4 book ai didi

php - 如何在 wordpress 插件中包含 $wpdb?

转载 作者:可可西里 更新时间:2023-11-01 13:13:53 26 4
gpt4 key购买 nike

我在 wordpress 中的一个 plugin 上开发了一段时间,但有一个问题一直困扰着我。我想将数据库表导出为 excel 文件,因此我需要从我的插件目录中的文件访问全局 $wpdb->variable

我找到了一个解释我应该包括哪些类的博客条目,但这不起作用(链接在下面)。如您所见,我做了一个var_dump,但它从未达到那个点。如果我将 wp-configwp-load 的包含留在代码之外,转储 返回 NULL,所以我猜是导入的问题。

无论如何,我希望有人能帮我解决这个问题。我不一定需要修复我的方法,我只需要一种方法来导出一组数据(从我的数据库中获取)以在 wordpress 中表现出色。任何帮助,将不胜感激。提前致谢。

http://www.notesbit.com/index.php/web-mysql/web-scripts/standalone-access-the-wordpress-database-using-wpdb/

include_once('../../../wp-config.php');
include_once('../../../wp-load.php');
include_once('../../../wp-includes/wp-db.php');

var_dump($wpdb);
$filter = get_where_clause();
$order = get_order_by_clause();

$data = $wpdb->get_results("SELECT * FROM " . $table_prefix . "team_data" . $filter . $order, ARRAY_A);

$result = array();

编辑:我不能包含 wp-config,它会不断出错。我知道错误发生在哪里,我只需要找到一个解决方法。当查看 wp-settings 页面(包含在 wp-config 中)时,您会发现这行代码:

foreach ( wp_get_active_and_valid_plugins() as $plugin )
include_once( $plugin );
unset( $plugin );

这是一个错误。我只是不知道我应该如何解决这个错误。

编辑 2:问题解决了。包含该文件时,我不止一次地包含了 wp-config(尽管我声明它应该只包含一次)。我使用以下代码解决了这个问题。

global $wpdb, $table_prefix;

if(!isset($wpdb))
{
require_once('../../../../wp-config.php');
require_once('../../../../wp-includes/wp-db.php');
}

最佳答案

如果您要创建 WordPress 插件,则无需手动包含这些文件。

如果你想导出你的表,为什么不为它创建一个函数/类并将 $wpdb 传递给它(如果你需要它)。您也可以使用普通的 MySQLi -class(来自 PHP)访问您的 MySQL 数据库。


如果您只想使用 WordPress 使用的已存储登录值访问 MySQL 数据库,您可以包含 WordPress 根目录中的 wp_config 文件。它有一些( self 解释)全局字段,您可以使用它们连接到您的数据库:

include "WP-ROOT-PATH/wp-config.php";
$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
// Test the connection:
if (mysqli_connect_errno()){
// Connection Error
exit("Couldn't connect to the database: ".mysqli_connect_error());
}

之后你就有了一个 MySQLi 类的实例(如上所述),你可以用它来访问你的数据库。

不过,我不确定这是否是完美的方式,但它确实有效。


要调试 WordPress(如果某些东西不起作用并且没有错误消息),您应该在 wp-config.php- 文件中激活调试:

/**
* For developers: WordPress debugging mode.
*
* Change this to true to enable the display of notices during development.
* It is strongly recommended that plugin and theme developers use WP_DEBUG
* in their development environments.
*/
define('WP_DEBUG', true);

此外,如果您在本地服务器上测试 PHP 脚本,您应该在 php.ini display_error 设置为 on-文件:

; This directive controls whether or not and where PHP will output errors,
; notices and warnings too. Error output is very useful during development, but
; it could be very dangerous in production environments.
display_errors = On

然而,这应该只在您的本地测试服务器上完成,而不是在生产场景中。

关于php - 如何在 wordpress 插件中包含 $wpdb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6217098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com