I have two totally separate WP websites setup. Different domains, different databases. I manage both of them and they are both hosted on a dedicated server. I am trying to include some basic content that requires just a tad more than an RSS feed. I need to pull data from SITE-1 and display it on SITE-2, using basic WP formatting from a loop. Everywhere I’ve looked makes it seem impossible. I’ve tried calling wp-load.php but can’t get it to work, and am not sure if it is even the right way to go. I have access to both sites’ root servers, and even the server root if necessary. Is there anyway to do this? Thanks!
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Yeah
$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 />";
Another way is to use the HTTP api:
Code in your first site, where you want to display the data:
$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'];
Code in your second site, in the theme’s functions.php (or create a plugin):
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(); ?>" rel="nofollow noreferrer noopener"><?php the_title(); ?></a>
<?php the_content(); ?>
<?php
endwhile;
die();
endif;
}
The 2nd method is easier and more flexible from the “formatting” perspective. For example here you could easily echo the post thumbnail as html, while using the database approach it would be very hard for you to get the link to the thumbnail image…
Method 2
I think your question is very similar to this question:
Basically you just need to created the $wpdb using the security credentials for your other site. Take a look at my answer on that question and let me know if it does or does not answer your question, and if not why so I might be able to provide a better answer.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0