[wordpress]XML_RPCで記事を新規投稿する際にID指定する方法
記事と何の関係も無い写真にしてみました!
今日はWordPressでXML_RPCにて記事投稿する際、ID指定する方法を調べたので自分用にメモ。
概要
wordpressにて記事を新規投稿する場合、IDは自動で付与されますが
このIDをローカルで管理しているデータと統一したかったため、ID指定するカスタマイズについてまとめました。
カスタマイズ箇所
wp-includes/class-wp-xmlrpc-server.php
781行目付近
protected function _prepare_post( $post, $fields ) { // Holds the data for this post. built up based on $fields. $_post = array( 'post_id' => strval( $post['ID'] ) ); // Prepare common post fields. $post_fields = array( 'import_id' => $post['import_id'], // この行を追加 'post_title' => $post['post_title'], 'post_date' => $this->_convert_date( $post['post_date'] ), 'post_date_gmt' => $this->_convert_date_gmt( $post['post_date_gmt'], $post['post_date'] ), 'post_modified' => $this->_convert_date( $post['post_modified'] ), 'post_modified_gmt' => $this->_convert_date_gmt( $post['post_modified_gmt'], $post['post_modified'] ), 'post_status' => $post['post_status'], 'post_type' => $post['post_type'], 'post_name' => $post['post_name'], 'post_author' => $post['post_author'], 'post_password' => $post['post_password'], 'post_excerpt' => $post['post_excerpt'], 'post_content' => $post['post_content'], 'post_parent' => strval( $post['post_parent'] ), 'post_mime_type' => $post['post_mime_type'], 'link' => get_permalink( $post['ID'] ), 'guid' => $post['guid'], 'menu_order' => intval( $post['menu_order'] ), 'comment_status' => $post['comment_status'], 'ping_status' => $post['ping_status'], 'sticky' => ( $post['post_type'] === 'post' && is_sticky( $post['ID'] ) ), ); //中略 }
1357行目付近
if ( ! empty( $dateCreated ) ) { $post_data['post_date'] = get_date_from_gmt( iso8601_to_datetime( $dateCreated ) ); $post_data['post_date_gmt'] = iso8601_to_datetime( $dateCreated, 'GMT' ); } //ここから追加 if ( isset( $post_data['import_id'] ) ) { $post_data['ID'] = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft', 'import_id' =>$post_data['import_id'] ) ); } //追加ここまで if ( ! isset( $post_data['ID'] ) ) $post_data['ID'] = get_default_post_to_edit( $post_data['post_type'], true )->ID; $post_ID = $post_data['ID'];
これで設定は完了です。
import_idというkeyがあれば、ID指定して新規投稿できる様になりました。
XML_RPC投稿の方法
外部からWordPressに記事投稿する際に、XML_RPCを使います。
記事投稿にあたって、wp.xmlrpcをダウンロードします。
使い方
require_once('wp.xmlrpc.php'); $host = 'hogehoge.net'; $user = 'admin'; $password = 'mypassword'; $endpoint = 'http://hogehoge.net/xmlrpc.php'; $wp = new wpXMLRPC($endpoint, $host, $user, $password); $data = array( 'import_id' => 10000, 'post_title' => 'タイトル', 'post_content' => '内容です!', 'post_thumbnail' => 'test.jpg', // 他ドメインも可 'terms_names' => array( 'post_tag' => array('タグ1', 'タグ2', array('name'=> 'タグ3', 'slug' => 'Tag3')) ) ); $wp->newPost($data)
これで投稿が完了しました。
すでにIDが存在する場合には新規投稿できませんので、IDチェックは事前に必要です。
以上、XML_RPCで記事を新規投稿する際にID指定する方法でした。
最新情報をお届けします