2013-06-12 66 views
1

对于noob-question,提前很抱歉。从外部服务器访问wordpress数据库对象(wpdb)

我已经搜索谷歌和StackOverflow,并已发现很多方法来访问wpdb的PHP页面上,当你在相同的服务器,但似乎没有人有一个答案从一个完全不同的调用它服务器。

我试图在Piwik中创建一个插件来查询我们的多站点WP数据库(从Piwik的一个单独的服务器上托管)来获取帖子的总数。当您使用wpdb类(例如$ wpdb-> get_results)时,查询很容易,但如果您尝试运行直接的SQL查询则不那么容易,因为您必须从60个以上的表中统计计数,因此我希望使用wpdb来获取所有有用的功能。如果设置allow_url_include=1

话虽这么说,使用require_once('http://www.example.com/wordpress/wp-load.php');(H/T到stormmyfrog)访问对象WPDB是不是很安全。有没有其他方法可以解决这个问题?

回答

1

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

你需要做的是创建一个API。您可能需要创建一个Wordpress插件,以创建一个Piwik可以查询以获取结果的新网址。 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现场

<?php 

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

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

作品充满了想象,谢谢! –