質問編集履歴

4 案追加

ByronHasegawa

ByronHasegawa score 263

2016/03/18 19:32  投稿

外部のWordpressから読み込んだ記事を別のWordpressに自動で投稿したいです
Aサイトから読み込んだ記事をBサイトに自動で投稿させたいです。
また、そのAサイトの記事を更新したらBサイトで自動生成された記事も更新されるようにしたいです。
今の段階でのソースです。
```ここに言語を入力
global $wpdb;
$results = $wpdb->get_results("
SELECT post_title
FROM wp_posts
");
foreach ($results as $post) {
$page_exists = $post->post_title;
}
//その他DB接続設定
$another_db_user = 'user';
$another_db_pass = 'pass';
$another_db_name = 'name';
$another_db_host = 'localhost';
$another_tb_prefix = 'wp_';
$mydb = new wpdb($another_db_user,$another_db_pass,$another_db_name,$another_db_host);
$mydb->set_prefix($another_tb_prefix);
//一覧情報取得
$result = $mydb->get_results("
SELECT 
m0.post_title, 
m0.id, 
m0.post_name,
m0.guid 
FROM ( select post_title, id, guid, post_name from wp_posts where post_type = 'bio' AND post_status = 'publish' ) AS m0
");
foreach ($result as $value) {
if( $value->post_title == $page_exists ) {
//何もしない
}
else {
$my_access = Array(
'post_author' => '1',
'post_title' => ''.$value->post_title.'',
'post_status' => 'publish',
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_name' => ''.$value->post_name.'',
'post_type' => 'page',
'post_parent' => '115822',
'page_template' => 'template-profile-info.php'
     );
wp_insert_post($my_access);
}
}
```
**これだと記事は重複されて繰り返し自動投稿します。**
**これだと記事は重複されて繰り返し自動投稿します。**
###別のソースの案
```ここに言語を入力
$this_posts = get_posts(
               array(
                   'post_type' => 'page',
                   'page_template' => 'template-profile-info.php'
               )
           );
           
$this_post_titles = wp_list_pluck( $this_posts, 'post_title' );
       
// set the DB creds
$another_db_user = 'user';
$another_db_pass = 'pass';
$another_db_name = 'name';
$another_db_host = 'localhost';
$another_tb_prefix = 'wp_';
// setup the DB connection
$mydb = new wpdb( $another_db_user, $another_db_pass, $another_db_name, $another_db_host );
$mydb->set_prefix( $another_tb_prefix );
//一覧情報取得
$result = $mydb->get_results("
SELECT 
m0.post_title, 
m0.id, 
m0.post_name,
m0.guid 
FROM ( select post_title, id, guid, post_name from wp_posts where post_type = 'bio' AND post_status = 'publish' ) AS m0
");
foreach ( $result as $value ) {
   if ( in_array( $value->post_title, $this_post_titles ) ) {
       
   } else {
       $my_access = array(
                   'post_author' => '1',
                   'post_title' => $value->post_title,
                   'post_status' => 'publish',
                   'comment_status' => 'closed',
                   'ping_status' => 'closed',
                   'post_name' => $value->post_name,
                   'post_type' => 'page',
                   'post_parent' => '115822',
                   'page_template' => 'template-profile-info.php'
                 );
       wp_insert_post( $my_access );
   }
}
```
###さらに別のソースの案
```ここに言語を入力
function wpse_20160318_do_db_sync() {
   // query the DB
   global $wpdb;
   $result = $wpdb->get_results(
       "
   SELECT post_name
   FROM wp_posts
   WHERE post_status = 'publish'
   AND post_type = 'page'
   "
   );
   // for all the results, let's check against the slug.
   foreach ( $result as $r ) {
       // see if we can find it...
       $post = get_page_by_path( $r->post_name );
   }
   
   // set the DB creds
   $another_db_user = 'user';
   $another_db_pass = 'pass';
   $another_db_name = 'name';
   $another_db_host = 'localhost';
   $another_tb_prefix = 'wp_';
   // setup the DB connection
   $mydb = new wpdb( $another_db_user, $another_db_pass, $another_db_name, $another_db_host );
   $mydb->set_prefix( $another_tb_prefix );
   //一覧情報取得
   $results = $mydb->get_results("
   SELECT 
   m0.post_title, 
   m0.id, 
   m0.post_name,
   m0.guid 
   FROM ( select post_title, id, guid, post_name from wp_posts where post_type = 'bio' AND post_status = 'publish' ) AS m0
   ");
   foreach ( $results as $value ) {
       
       
       if ( ! $post ) {
           // We're cool, let's create this one.
           $my_access = Array(
       
           'post_author' => '1',
           'post_title' => ''.$value->post_title.'',
           'post_status' => 'publish',
           'comment_status' => 'closed',
           'ping_status' => 'closed',
           'post_name' => ''.$value->post_name.'',
           'post_type' => 'page',
           'post_parent' => '115822',
           'page_template' => 'template-profile-info.php'
           );
           wp_insert_post($my_access);
           
       }
       else {
           // No need to duplicate this one
           
       }
       
   }
   
   
}
// using on init to make sure the DB is ready to go
add_action( 'init', 'wpse_20160318_do_db_sync' );
```
  • PHP

    31401 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • SQL Server

    1071 questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

  • phpMyAdmin

    1049 questions

    phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

  • SQL

    4332 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • WordPress

    12276 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

3 最新ソース

ByronHasegawa

ByronHasegawa score 263

2016/03/18 16:29  投稿

外部のWordpressから読み込んだ記事を別のWordpressに自動で投稿したいです
Aサイトから読み込んだ記事をBサイトに自動で投稿させたいです。
また、そのAサイトの記事を更新したらBサイトで自動生成された記事も更新されるようにしたいです。
今の段階でのソースです。
```ここに言語を入力
global $wpdb;  
$results = $wpdb->get_results("  
SELECT post_title  
FROM wp_posts  
");  
 
foreach ($results as $post) {  
$page_exists = $post->post_title;  
}  
 
 
//その他DB接続設定
$another_db_user = 'user';
$another_db_pass = 'pass';
$another_db_name = 'name';
$another_db_host = 'localhost';
$another_tb_prefix = 'wp_';
$mydb = new wpdb($another_db_user,$another_db_pass,$another_db_name,$another_db_host);
$mydb->set_prefix($another_tb_prefix);
//一覧情報取得
$result = $mydb->get_results("
SELECT 
   m0.post_title, 
   m0.id, 
   m0.post_name,
   m0.guid, 
   (select m1.meta_value from wp_postmeta m1 where m1.post_id = m0.id and m1.meta_key = 'association' ) AS 'association', 
   (select m2.meta_value from wp_postmeta m2 where m2.post_id = m0.id and m2.meta_key = 'number' ) AS 'number',
   (select m3.meta_value from wp_postmeta m3 where m3.post_id = m0.id and m3.meta_key = 'name_furigana' ) AS 'name_furigana'
m0.post_title, 
m0.id, 
m0.post_name,
m0.guid 
FROM ( select post_title, id, guid, post_name from wp_posts where post_type = 'bio' AND post_status = 'publish' ) AS m0
");
$page = get_page_by_path( ''.$value->post_name.'' );
if( isset( $pages ) ) {
     
foreach ($result as $value) {
 
if( $value->post_title == $page_exists ) {  
 
//何もしない  
 
}  
 
else {  
$my_access = Array(
   'post_author' => '1',
   'post_title' => ''.$value->post_title.'',
   'post_status' => 'publish',
   'comment_status' => 'closed',
   'ping_status' => 'closed',
   'post_name' => ''.$value->post_name.'',
   'post_type' => 'page',
   'post_parent' => '115822',
   'post_content' => '本文本文本文本',
   'page_template' => 'template-profile-info.php'
);
'post_author' => '1',
'post_title' => ''.$value->post_title.'',
'post_status' => 'publish',
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_name' => ''.$value->post_name.'',
'post_type' => 'page',
'post_parent' => '115822',
'page_template' => 'template-profile-info.php'
     );
wp_insert_post($my_access);
}
wp_insert_post($my_access);
}
```
**これだと記事は重複されて繰り返し自動投稿します。**
  • PHP

    31401 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • SQL Server

    1071 questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

  • phpMyAdmin

    1049 questions

    phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

  • SQL

    4332 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • WordPress

    12276 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

2

ByronHasegawa

ByronHasegawa score 263

2016/03/18 10:21  投稿

外部のWordpressから読み込んだ記事を別のWordpressに自動で投稿したいです
Aサイトから読み込んだ記事をBサイトに自動で投稿させたいです。
また、そのAサイトの記事を更新したらBサイトで自動生成された記事も更新されるようにしたいです。
今の段階でのソースです。
```ここに言語を入力
//その他DB接続設定
$another_db_user = 'user';
$another_db_pass = 'pass';
$another_db_name = 'name';
$another_db_host = 'localhost';
$another_tb_prefix = 'wp_';
$mydb = new wpdb($another_db_user,$another_db_pass,$another_db_name,$another_db_host);
$mydb->set_prefix($another_tb_prefix);
//一覧情報取得
$result = $mydb->get_results("
SELECT 
   m0.post_title, 
   m0.id, 
   m0.post_name,
   m0.guid, 
   (select m1.meta_value from wp_postmeta m1 where m1.post_id = m0.id and m1.meta_key = 'association' ) AS 'association', 
   (select m2.meta_value from wp_postmeta m2 where m2.post_id = m0.id and m2.meta_key = 'number' ) AS 'number',
   (select m3.meta_value from wp_postmeta m3 where m3.post_id = m0.id and m3.meta_key = 'name_furigana' ) AS 'name_furigana'
FROM ( select post_title, id, guid, post_name from wp_posts where post_type = 'bio' AND post_status = 'publish' ) AS m0
");
$page = get_page_by_path( ''.$value->post_name.'' );
if( isset( $pages ) ) {
     
foreach ($result as $value) {
$my_access = Array(
   'post_author' => '1',
   'post_title' => ''.$value->post_title.'',
   'post_status' => 'publish',
   'comment_status' => 'closed',
   'ping_status' => 'closed',
   'post_name' => ''.$value->post_name.'',
   'post_type' => 'page',
   'post_parent' => '115822',
   'post_content' => '本文本文本文本',
   'page_template' => 'template-profile-info.php'
);
}
wp_insert_post($my_access);
}
```
**これだと記事は重複されてしまいます。**
**これだと記事は重複されて繰り返し自動投稿します。**
  • PHP

    31401 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • SQL Server

    1071 questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

  • phpMyAdmin

    1049 questions

    phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

  • SQL

    4332 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • WordPress

    12276 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

1 詳細

ByronHasegawa

ByronHasegawa score 263

2016/03/17 17:05  投稿

外部のWordpressから読み込んだ記事を別のWordpressに自動で投稿したいです
Aサイトから読み込んだ記事をBサイトに自動で投稿させたいです。
また、そのAサイトの記事を更新したらBサイトで自動生成された記事も更新されるようにしたいです。
今の段階でのソースです。
```ここに言語を入力
//その他DB接続設定
$another_db_user = 'user';
$another_db_pass = 'pass';
$another_db_name = 'name';
$another_db_host = 'localhost';
$another_tb_prefix = 'wp_';
$mydb = new wpdb($another_db_user,$another_db_pass,$another_db_name,$another_db_host);
$mydb->set_prefix($another_tb_prefix);
//一覧情報取得
$result = $mydb->get_results("
SELECT 
   m0.post_title, 
   m0.id, 
   m0.post_name,
   m0.guid, 
   (select m1.meta_value from wp_postmeta m1 where m1.post_id = m0.id and m1.meta_key = 'association' ) AS 'association', 
   (select m2.meta_value from wp_postmeta m2 where m2.post_id = m0.id and m2.meta_key = 'number' ) AS 'number',
   (select m3.meta_value from wp_postmeta m3 where m3.post_id = m0.id and m3.meta_key = 'name_furigana' ) AS 'name_furigana'
FROM ( select post_title, id, guid, post_name from wp_posts where post_type = 'bio' AND post_status = 'publish' ) AS m0
");
$page = get_page_by_path( ''.$value->post_name.'' );
if( isset( $pages ) ) {
     
foreach ($result as $value) {
$my_access = Array(
   'post_author' => '1',
   'post_title' => ''.$value->post_title.'',
   'post_status' => 'publish',
   'comment_status' => 'closed',
   'ping_status' => 'closed',
   'post_name' => ''.$value->post_name.'',
   'post_type' => 'page',
   'post_parent' => '115822',
   'post_content' => '本文本文本文本',
   'page_template' => 'template-profile-info.php'
);
}
wp_insert_post($my_access);
}
```
```
**これだと記事は重複されてしまいます。**
  • PHP

    31401 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • SQL Server

    1071 questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

  • phpMyAdmin

    1049 questions

    phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

  • SQL

    4332 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • WordPress

    12276 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る