web-dev-qa-db-ja.com

新しい投稿を作成するときに、外部からのコンテンツでフィールドに事前入力します

外部ソースからの/wp-admin/post-new.phpページからいくつかのフィールドを埋める方法を見つけたいです。

これはタイトルに対して機能します:/wp-admin/post-new.php?post_title=title1をロードすると、タイトル入力がtitle1で埋められます。

あなたがアイデアを得る、素晴らしいことは/wp-admin/post-new.php?post_title=title1&content=content1&tags=tag1,tag2&cat=cat1,cat2...のようなものであるので、私はほとんどのフィールドがすでに外部のスクリプトから埋められている状態でpost-new.phpに到達したとき。

カスタムフィールドにも記入する必要があります。

どうやってやるの?最良の選択肢は何ですか?自分自身をベースに接続して挿入クエリを実行する完全な外部スクリプト?プラグイン?もしそうなら、あなたはいくつかの提案がありますか?

2
user2976

空の投稿は get_default_post_to_edit() によって作成されます。この関数は、post_title配列内の$_REQUESTcontent、およびexcerptの値を読み取り、さらにそれらをdefault_titledefault_contentおよびdefault_excerptを介してフィルタリングします。

デフォルトでは、この関数は "偽の" $postオブジェクトのみを返しますが、$create_in_dbパラメータがtrueに設定されている場合、実際にはpost_statusauto-draftに設定してデータベースに保存されます。

このパラメータはpost-new.php で設定されます。これはwp_insert_postにフックして$_REQUEST配列または外部ソースからタグのような追加のものを保存できることを意味します。非常に簡単な例:

add_action( 'load-post-new.php', 'wpse8650_post_new' );
function wpse8650_post_new()
{
    add_action( 'wp_insert_post', 'wpse8650_wp_insert_post_default' );
}

function wpse8650_wp_insert_post_default( $post_id )
{
    add_post_meta( $post_id, 'wpse8650_meta_key', $_REQUEST['meta_value'] );
    wp_set_post_tags( $post_id, $_REQUEST['tags']) );
}

これは、カスタムフィールドとpostタグがページを構築するときにデータベース(またはキャッシュ)から再度読み取られるために機能します。これらのメタボックスが表示される前にこれを実行します。

10
Jan Fabry

これがエンドユーザーを追加するのであれば、おそらく最も簡単なことは値を割り当てるjQueryスクリプトを作成することです。 URLを解析する方法は次のとおりです。

そして、WordPressにJavascriptを追加する方法は次のとおりです。

最後に、WordPress編集画面でソースを表示して入力フィールドの名前を確認します。次に、jQueryを使用して値を割り当てる方法を示します。

3
MikeSchinkel

Mikeの答えに加えて、WordPressのXML-RPCサーバーを使って外部投稿をすることもできます。それはあなたがやろうとしていることによります。

0
Zack