Intereting Posts
Как программно вставить новый пункт меню? Theme Customizer: создание многоуровневой панели Невозможно загрузить пользовательский файл CSS в дочернюю тему Отзывчивый сайт на WordPress – Подавайте разные типы сообщений на каждое устройство Как ограничить пользователей одним комментарием за сообщение WordPress Multisite – вопросы о выборе всех сообщений со всех сетевых сайтов Обновление / Перенос сайта Минимальные файлы шаблонов для разработки темы Почему я не могу вызвать функцию (член) изнутри foreach? Как я могу сделать окно поиска для поиска по настраиваемому полю Измените отображение API настроек (do_settings_sections) Неактивна локализация меток пользовательских почтовых сообщений и таксономии Содержимое с вкладками для боковой панели WordPress Показывать роль пользователя рядом с комментарием Плагин не обновляет его версию и код на WordPress.org

Отображение содержимого с одного сайта WP на отдельном сайте WP

У меня есть две полностью отдельные настройки веб-сайтов WP. Различные домены, разные базы данных. Я управляю ими обоими, и оба они размещаются на выделенном сервере. Я пытаюсь включить некоторый базовый контент, который требует чуть больше, чем RSS-канал. Мне нужно вытащить данные из SITE-1 и отобразить их на SITE-2, используя базовое форматирование WP из цикла. Везде, где я смотрел, это кажется невозможным. Я пробовал называть wp-load.php, но не могу заставить его работать, и я не уверен, что это даже правильный путь. У меня есть доступ к корневым серверам обоих сайтов и даже к корню сервера, если это необходимо. Есть какой-либо способ сделать это? Благодаря!

Да

$wpdb2 = new wpdb('dbuser', 'dbpassword', 'dbname', 'dbhost'); // get 10 posts, assuming the other WordPress db table prefix is "wp_" $query = "SELECT post_title, guid FROM wp_posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date DESC LIMIT 10"; $someposts = $wpdb2->get_results($query, OBJECT); foreach($someposts as $somepost) echo "<a href=\"{$somepost->guid}\">{$somepost->post_title}</a><br />"; 

Другой способ – использовать HTTP api :

Код на вашем первом сайте, где вы хотите отображать данные:

 $send = array( 'body' => array( 'action' => 'get_some_posts', // send other data here, maybe a user/password if you're querying senstive data ), 'user-agent' => 'RodeoRamsey; '.get_bloginfo('url') ); $response = wp_remote_post('http://yoursiteurl.com/', $send); if (!is_wp_error($response) && ($response['response']['code'] == 200)) echo $response['body']; 

Код на вашем втором сайте, в функции functions.php темы (или создать плагин):

 add_action('template_redirect', 'process_post_request'); function process_post_request(){ if($_POST['action'] == 'get_some_posts'): $posts = new WP_Query(); $query = array('posts_per_page' => 10); $posts->query($query); while ($posts->have_posts()): $posts->the_post(); // here's the usual loop ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php the_content(); ?> <?php endwhile; die(); endif; } 

Второй способ проще и гибче от перспективы «форматирования». Например, здесь вы можете легко откликнуться на миниатюру сообщения как html, при использовании подхода к базе данных вам будет очень сложно получить ссылку на уменьшенное изображение …

Я думаю, что ваш вопрос очень похож на этот вопрос:

  • Получение эскизов с другого сайта WP

В основном вам просто нужно создать $wpdb используя учетные данные безопасности для вашего другого сайта. Взгляните на мой ответ на этот вопрос и сообщите мне, если он ответит на ваш вопрос или не ответит на него, и если не так, то почему я мог бы дать лучший ответ.