web-dev-qa-db-ja.com

1つのコンテンツを表示する WP 別のサイト WP サイト

私は2つの全く別のWP Webサイト設定を持っています。異なるドメイン、異なるデータベース。私はそれらの両方を管理します、そしてそれらは両方とも専用のサーバーでホストされます。私はRSSフィードより少しだけ多くを必要とするいくつかの基本的なコンテンツを含めようとしています。ループからの基本的なWPフォーマットを使用して、SITE-1からデータを引き出してSITE-2に表示する必要があります。私が見たところはどこでも不可能です。私はwp-load.phpを呼び出そうとしましたがそれをうまく動かすことができません、そしてそれが行くべき正しい方法でさえあるかどうかわからない。私は両方のサイトのルートサーバー、そして必要ならばサーバールートにもアクセスできます。これを行う方法はありますか?ありがとうございます。

6
RodeoRamsey

ええ

$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として簡単にエコーできますが、データベースアプローチを使用している間はサムネイル画像へのリンクを取得するのは非常に困難です。

7
onetrickpony

あなたの質問はこの質問と非常によく似ていると思います。

基本的にあなたはあなたの他のサイトのためにセキュリティ証明書を使って$wpdbを作成する必要があるだけです。その質問に対する私の答えを見て、それがあなたの質問に答えるかどうかを私に知らせてください。

2
MikeSchinkel