Как упоминалось в ответе Р.Рикеша, многосторонняя установка упрощает задачу, поскольку это одна и та же база данных, и у вас есть к ней доступ. Если у вас возникли проблемы с подключением к сторонней базе данных (возможно, какие-то ограничения безопасности или база данных находится не на том же сервере), вам придется проделать немного больше работы. В этом случае вы можете получить фид, проанализировать и сохранить его. Получение фида немного проблематично, поскольку он обычно возвращает последние x постов (по умолчанию — 10 постов). Если вы хотите получить канал с помощью
getall
все pre_get_posts
, check if a feed is requested and check if the query var /**
* Plugin Name: Fetch Posts Server
* Plugin URI:
* Description: Allow to fetch all posts in XML format from another blog
* Version: 0.1
* Author: Ralf Albert
* Author URI: http://yoda.neun12.de
* License: GPLv3
*/
namespace FetchPostsServer;
add_filter(
'query_vars',
function( $qvars ) {
array_push( $qvars, 'getall' );
return $qvars;
}
);
add_action( 'pre_get_posts', __NAMESPACE__ . '\get_all_posts_as_xml' );
function get_all_posts_as_xml( $query ) {
if ( true === $query->is_feed ) {
$getall = ( isset( $query->query['getall'] ) ) ? $query->query['getall'] : '';
if ( ! empty( $getall ) ) {
// remove the feed posts limit
add_filter(
'post_limits_request',
function( $limits ) { return ''; }
);
}
}
}
сообщения, вам необходимо установить «серверный» плагин, который изменяет настройки. Чтобы не нарушать нормальное поведение ленты, я запускаю неограниченную ленту с параметром URL. Начнем с плагина «сервер».
Это легко. Сначала плагин добавляет запрос var. На следующем этапе плагин подключается к restore_current_blog()
, we get установлен. Если он установлен, добавьте фильтр, чтобы удалить ограничение на количество сообщений. Если мы теперь запросим фид и передадим параметр URL
все
switch_to_blog()
постов вместо обычно ограниченного количества в 10 (или около того).
$newWPDB = new wpdb('Username','password','database','localhost');
$rows = $newWPDB->get_results("you-query-here");
Со стороны «клиента» работы немного больше. Нам нужен cron, чтобы проверять наличие новых сообщений, получать все сообщения при первом запуске и возвращать сохраненные сообщения по запросу. Я выбираю таблицу опций для хранения постов, думаю, это лучшее место.
Плагин ежедневно получает ленту, анализирует сообщения и сохраняет их в таблице параметров. Отобразить сохраненные сообщения очень просто:
Функция возвращает массив, в котором каждое сообщение представлено в виде массива (заголовок, постоянная ссылка и контент). Вы можете разместить код в шаблоне или виджете.