Wordpress - 制作简单Web服务的最佳实践

时间:2014-03-30 09:16:36

标签: php mysql wordpress

我使用WordPress创建一个简单的Web服务,没有任何插件或任何第三方只是简单的php文件放在站点根目录中,接收参数并通过

直接连接到WP数据库
require_once('../wp-load.php');

并通过

查询数据库中的所有数据
global $wpdb, $live_site;
$data = $wpdb->get_var($wpdb->prepare("SELECT meta_value FROM $wpdb->usermeta WHERE user_id = '".$sessionData['userID']."' AND meta_key='last_login_time'")); 

现在每件事情都进展顺利,但包括wp-load.php文件将加载所有已安装插件的wp站点,并包含许多真正不需要的php文件。

我需要通过实施 YAGNI (You aren't gonna need it)

来增强“网络服务”的方法

基本上如何在不加载任何其他不必要的文件的情况下包含全局$ wpdb,$ live_site; 和所有wp函数?

3 个答案:

答案 0 :(得分:1)

我建议您查看WordPress REST API proposed for Core inclusion in WordPress 3.9。这样你就不需要破解你自己的东西了,但是会得到一个由WordPress开发人员维护的经过良好测试的API。 从您所看到的,wordpress.com上的人们希望将他们自己的API迁移到核心,他们将确保没有可怕的性能问题袭击他们的服务器。

答案 1 :(得分:1)

This talk在WordPress中有很多关于现代开发的有用信息,但最相关的主题是this plugin,它会生成一个只读的JSON API。

答案 2 :(得分:0)

以上所有答案都非常有用,但在我的情况下不合适,因为我需要一种方法从数据库加载数据而不加载所有wp插件,主题和设置实际上没有

require_once('../wp-load.php');

require_once('../wp-config.php');

require_once(' ../ WP-setting.php&#39);

根本我在根站点中有一个文件夹包含Redbeanphp lib和config.php文件,我的php文件看起来像:

require_once('config.php');
require_once 'vendor/rb.php';
global $live_site;

R::setup('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASSWORD);
$categories = R::getAll('select * from wp_term_taxonomy WHERE parent = 4); 

我希望能帮助任何人真的很简单:)