Отображение контента с одного сайта WP на отдельном сайте WP
У меня есть два совершенно разных веб-сайта WP. Разные домены, разные базы данных. Я управляю ими обоими, и они оба размещены на выделенном сервере. Я пытаюсь включить некоторый базовый контент, который требует чуть больше, чем RSS-канал. Мне нужно извлечь данные с САЙТА-1 и отобразить их на САЙТЕ-2, используя базовое форматирование WP из цикла. Куда бы я ни посмотрел, это кажется невозможным. Я пытался дозвониться wp-load.php но не могу заставить его работать, и я не уверен, что это вообще правильный путь. У меня есть доступ к корневым серверам обоих сайтов и даже к корневому серверу, если это необходимо. Есть ли вообще возможность это сделать? Спасибо!
2 answers
Да
$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;
}
2-й метод проще и гибче с точки зрения "форматирования". Например, здесь вы можете легко воспроизвести эскиз сообщения в виде html, в то время как при использовании подхода к базе данных вам будет очень сложно получить ссылку на уменьшенное изображение...
Я думаю, что ваш вопрос очень похож на этот вопрос:
В основном вам просто нужно создать $wpdb
, используя учетные данные безопасности для вашего другого сайта. Взгляните на мой ответ на этот вопрос и дайте мне знать, отвечает ли он на ваш вопрос или нет, а если нет, то почему, чтобы я мог дать лучший ответ.