2013-06-12 2 views
1

Извините заранее за вопрос noob.Доступ к объекту DB Wordpress (wpdb) с внешнего сервера

Я мытая Google и StackOverflow и нашел множество способов доступа wpdb на странице PHP, когда вы находитесь на тот же сервере, но ни один не кажется, есть ответ на вызов его из совершенно других сервер.

Я пытаюсь создать плагин в Piwik, который запрашивает нашу многостраничную WP DB (размещенную на отдельном сервере из Piwik), чтобы получить общее количество сообщений. Запрос выполняется легко, если вы используете класс wpdb (например, $ wpdb-> get_results) ... но не так просто, если вы попытаетесь запустить прямой SQL-запрос, так как вам нужно будет подсчитать количество из 60 + таблиц, поэтому мое желание использовать wpdb для захвата всех полезных функций.

Это, используя require_once('http://www.example.com/wordpress/wp-load.php'); (h/t to stormmyfrog) для доступа к объекту wpdb не очень безопасно, если вы установили allow_url_include=1. Есть ли другой способ обойти это?

ответ

1

Использование require_once('http://www.example.com/wordpress/wp-load.php'); Не работает из внешних источников, даже если вы allow_url_include. Ваш сервер все еще анализирует файл php и отправляет анализируемый php, который в конечном итоге будет полностью пустым.

Что вам нужно сделать, это создать API. Возможно, вам захочется создать плагин Wordpress, который создаст новый URL-адрес, который Piwik может запросить, чтобы получить результаты.

супер простой API на сервере Wordpress может выглядеть следующим образом:

/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

Работы сказочно, спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^