从外部服务器访问wordpress DB对象(wpdb)

时间:2013-06-12 16:39:00

标签: php wordpress wpdb matomo

提前抱歉为noob-question。

我已经搜索了Google和StackOverflow,并且当你在相同的服务器上时,已经找到了很多方法来访问php页面上的wpdb,但似乎没有人能够回答它来自完全不同的服务器。

我正在尝试在Piwik中创建一个插件,用于查询我们的多站点WP DB(托管在与Piwik不同的服务器上)以获取帖子的总数。使用wpdb类时查询很简单(例如,$ wpdb-> get_results)...但是如果你尝试运行一个直接的SQL查询就不那么容易了,因为你必须计算60多个表的计数因此我希望使用wpdb来获取所有有用的函数。

话虽如此,如果设置require_once( 'http://www.example.com/wordpress/wp-load.php' );,使用allow_url_include=1(h / t到stormmyfrog)来访问wpdb对象并不是很安全。还有另一种解决方法吗?

1 个答案:

答案 0 :(得分:1)

使用require_once( 'http://www.example.com/wordpress/wp-load.php' );即使您allow_url_include,也无法在外部位置使用。你的服务器仍然解析php文件并发送解析​​后的php,这将最终完全空白。

您需要做的是创建API。您可能希望创建一个Wordpress插件,创建一个Piwik可以查询以获得结果的新URL。

Wordpress服务器上的一个超级简单的api可能如下所示:

<强> /api.php

<?php

// TODO add authentication, probably token-based
// TODO move this to a WP plugin

include ('wp-load.php');

// Get count of published posts
$count = array(
    'count' => wp_count_posts()->publish
);

echo json_encode($count);

PIWIK SITE

<?php

$data = json_decode(file_get_contents('http://www.example.com/wordpress/api.php'));

echo $data->count;
// Result: number of published posts