2011-02-10 2 views
4

ダッシュボードを介してユーザーが作成または更新した各Wordpress投稿用の投稿(またはページ)をプログラムで作成する必要があります。私は、自動投稿は、ユーザーが作成したり、特定のカテゴリ内の記事を更新し、自動投稿は、別のカテゴリで作成された場合にのみ作成されたフックは、プログラムでWordpressに子投稿を挿入します

add_action('publish_post', 'create_details_page'); 

を追加しました。各投稿はただ1つのカテゴリに属します。

 $auto_post = array(
       'comment_status' => 'closed', 
       'post_category' => array($category->term_id), 
       'post_author' => $latest_post[0]->post_author, 
       'post_type' => 'post', 
       'post_title' => 'Details for ' . $latest_post[0]->post_title, 
       'post_parent' => $latest_post[0]->ID, 
       'post_content' => 'Post content' 
     ); 
     $auto_post_id = wp_insert_post ($auto_post, true); 
     $details = get_post($auto_post_id); 
     wp_publish_post($auto_post_id); 

結果が矛盾している:時々私は1件の自動投稿が作成され得る、時には2、そして時折なしを次のようにポストを作成します 。なぜ、正確に1回だけ投稿を挿入するのですか?

は、ユーザーが作成したポストの子として自動投稿を取得するには:

$args = array(
     'post_type' => 'post', 
     'post_parent' => $parent_post_id, 
     'post_status' => 'publish' 
     /* 'category_name' => array('Auto Post Category') */ 
); 
$children = get_posts($args); 

CATEGORY_NAMEパラメータを追加するには、まったくの子の記事を取得しないようになります。 categoryパラメータがなければ、子投稿が返され、カテゴリ設定プロパティがあります。しかし、完全なリストは検索されないようで、結果は実行ごとに異なります。

自動投稿の内容をダッシュ​​ボードから編集した場合、この編集された投稿は上記のクエリによって返されません。どうして?

一貫性のない動作を解決してこれを取得する方法に関する提案はありますか? 私はWordpressを初めて使用しており、オンラインヘルプは疎であり、主にダッシュボードユーザーを対象としています。

Wordpress 3.0.4、php5を使用しています。

+0

私は 'wp_insert_post'を問題なく使用しました。私の実装では、私はWP Errorオブジェクトを返さず、 'date( 'Ymd H:i:s')を使って' post_status'を 'publish'(' wp_publish_post'を避けて)と 'post_date'を明示的に設定しています'。これらが役に立たないとすれば、 '$ auto_post_id'を印刷しようとしましたか? – polarblau

+0

この方法で印刷する方法は正確にはわかりません。私は$ auto_post_idが妥当な数値を返すことを知っています:get_post($ auto_post_id)は投稿を取得できます。 – jprusakova

+0

これの背後にある理由は何ですか?私たちが取り組むことができるより簡単な解決法があるのだろうか? –

答えて

0

documentationを確認してください。get_posts()は、カテゴリIDであるcategoryの引数をとります。 category_name引数は、別の関数、query_posts()で使用されます。

カテゴリIDを見つけるには、WPカテゴリのバックエンドでそのカテゴリにリンクしてください。

関連する問題