web-dev-qa-db-ja.com

経由で他のサーバーからWordPressに投稿する PHP

私はワードプレスサイトを運営しています - 「site.com」と別のサイト「input.com」はまったく別の場所でホストされています。その名前が示すように、 "input.com"は非常に単純な形式の入力サイトとして使用する必要があります(例:タイトルとコンテンツ)。入力した情報は、誰かがwp-adminパネルを使用して情報を入力したように、「site.com」に送信され、ブログ投稿として投稿されます。

通常私はこれのためにcURLを使うでしょう、しかしwp-adminパネルはかなり複雑なので(ログインともの)私はそれをするための他の方法を探しました。残念ながらwordpressのrest APIは "site.com"からデータを取得することに限られているようですが、それにデータを送信するオプションを提供していません。私が見つけた他のすべてのAPIは、古くなっているか、または文書化されているため、正しく機能しませんでした。

CURLプログラムをコーディングせずにこれを行う簡単な方法はありますか?私がこれまでに見つけた最も有望なことはこれです: https://github.com/HarriBellThomas/Wordpress_PostController しかし私はそれをまだうまく機能させることができませんでした。どうぞよろしくお願いします。

編集する

<?php

set_time_limit(0);
error_reporting(E_ALL);
ini_set('display_errors', 1);

include("./wp-includes/post.php");

// Create post object
$my_post = array(
  'post_title'    => "test",//wp_strip_all_tags( $_POST['post_title'] ),
  'post_content'  => "teeeeeeeessssssssssttttttttttt",// $_POST['post_content'],
  'post_status'   => 'publish',
  'post_author'   => 1,
  'post_category' => array( 1,2 )
);

// Insert the post into the database
wp_insert_post( $my_post );

?>
1
Julian Freyberg

Denis.stoyanovによって提案されたように、私はついにXML-RPCを使用してタスクを達成することができました。 xmlrpcがあなたのサーバーにインストールされている場合は単に wpPostXMLRPC関数 from stackoverflowを使ってください。しかし、使われている xmlrpc_encode_request() はあなたが通常避けようと試みる実験的な関数であることを覚えておいてください。

1
Julian Freyberg

Input.comからデータを受信するようにsite.comにスクリプトを設定し、site.comに投稿を作成するためにwp_insert_post()を使用します。

タイトル、コンテンツ、その他の投稿の詳細は、次の配列構造を使って送信されます。

$post = array(
  'ID'             => [ <post id> ] // Are you updating an existing post?
  'post_content'   => [ <string> ] // The full text of the post.
  'post_name'      => [ <string> ] // The name (slug) for your post
  'post_title'     => [ <string> ] // The title of your post.
  'post_status'    => [ 'draft' | 'publish' | 'pending'| 'future' | 'private' | custom registered status ] // Default 'draft'.
  'post_type'      => [ 'post' | 'page' | 'link' | 'nav_menu_item' | custom post type ] // Default 'post'.
  'post_author'    => [ <user ID> ] // The user ID number of the author. Default is the current user ID.
  'ping_status'    => [ 'closed' | 'open' ] // Pingbacks or trackbacks allowed. Default is the option 'default_ping_status'.
  'post_parent'    => [ <post ID> ] // Sets the parent of the new post, if any. Default 0.
  'menu_order'     => [ <order> ] // If new post is a page, sets the order in which it should appear in supported menus. Default 0.
  'to_ping'        => // Space or carriage return-separated list of URLs to ping. Default empty string.
  'pinged'         => // Space or carriage return-separated list of URLs that have been pinged. Default empty string.
  'post_password'  => [ <string> ] // Password for post, if any. Default empty string.
  'guid'           => // Skip this and let Wordpress handle it, usually.
  'post_content_filtered' => // Skip this and let Wordpress handle it, usually.
  'post_excerpt'   => [ <string> ] // For all your post excerpt needs.
  'post_date'      => [ Y-m-d H:i:s ] // The time post was made.
  'post_date_gmt'  => [ Y-m-d H:i:s ] // The time post was made, in GMT.
  'comment_status' => [ 'closed' | 'open' ] // Default is the option 'default_comment_status', or 'closed'.
  'post_category'  => [ array(<category id>, ...) ] // Default empty.
  'tags_input'     => [ '<tag>, <tag>, ...' | array ] // Default empty.
  'tax_input'      => [ array( <taxonomy> => <array | string>, <taxonomy_other> => <array | string> ) ] // For custom taxonomies. Default empty.
  'page_template'  => [ <string> ] // Requires name of template file, eg template.php. Default empty.
);  

新しい投稿を作成するには、IDを空白のままにします。

WP Codexに関する詳細な文書: https://codex.wordpress.org/Function_Reference/wp_insert_post

0
jdm2112