在我的站点中,我希望从另一个表中提取数据,而不必从另一个站点创建API。我已经看到你可以这样做:
$wpdbtest_otherdb = new wpdb(\'myaccount_cityuser\', \'mypassword\', \'myaccount_cities\', \'localhost\');
$wpdbtest_otherdb->show_errors();
$mycities = $wpdbtest_otherdb->get_results("SELECT name
FROM city
WHERE city.stadium = 1");
foreach ($mycities as $mycity) {
echo $mycity->name . \'<br />\';
}
然而,我不喜欢把所有东西都放在一个楔子里,包括数据库凭据。
What I\'ve tried:
已将凭据添加到
wp-config.php
define(\'DB_CAREERS_NAME\', \'careers\');
define(\'DB_CAREERS_USER\', \'root\');
define(\'DB_CAREERS_PASSWORD\', \'\');
define(\'DB_CAREERS_HOST\', \'localhost\');
define(\'DB_CAREERS_CHARSET\', \'utf8mb4\');
define(\'DB_CAREERS_COLLATE\', \'\');
将函数添加到
functions.php
function get_job_listings()
{
// Create new wpdb instance
$connection = new wpdb(DB_CAREERS_USER, DB_CAREERS_PASSWORD, DB_CAREERS_NAME, DB_CAREERS_HOST);
// Assign a table prefix
$connection->set_prefix(\'\');
// Status of jobs to show
$status = "Open";
// Perform query
$query = $connection->prepare(
"SELECT j.*
FROM $connection->job_posts j
WHERE j.status = \'%s\'
ORDER BY j.created_at DESC",
$status
);
$jobs = $connection->get_results($query);
return $jobs;
}
但是我想使用我的辅助数据库连接,就像使用标准的WordPress查询一样,以便所有查询生成器功能都可用。
SO网友:Jacob Peattie
但是我想使用我的辅助数据库连接,就像使用标准的WordPress查询一样,以便所有查询生成器功能都可用。
除非另一个数据库是具有完全相同的表结构的WordPress数据库,否则您不能。
WordPress中的查询生成器函数仅为处理WordPress的表而设计和构建。它们的内部逻辑都取决于它们查询的表的特定数据库结构。WP_Query
, 例如,仅设计用于查询wp_posts
表,它还取决于设计用于wp_postmeta
桌子wp_term_relationships
表等。
因此,这些类和函数不仅不能与您的自定义表一起使用,而且也没有任何用处,因为它们与这些表的耦合非常紧密。如果您的数据不是post meta或没有post状态,那么能够基于post meta或post状态进行查询是没有用的。
在处理自定义表时,您需要构建任何函数或类来自己查询它们。如果数据库是MySQL,那么wpdb()
实例将允许您访问帮助器方法,如prepare()
, insert()
, get_results()
等等,但这是WordPress将给你的最大帮助。