0

私が取り組んでいる Wordpress サイトには、「ニュース」(通常のブログ/投稿) のセクションがあり、会社が書かなければならないニュースに使用されます。次に、独自のページを持つプロモーション用のカスタム投稿タイプがあります。

プロモーションページにあるカスタム投稿タイプを介してクライアントがプロモーションコンテンツを追加できるようにしたいのですが、クライアントに強制することなく、このコンテンツをブログ/ニュースにも「クロスポスト」したいと思います。 2回書きます。

これを行う方法はありますか?ありがとう。

注意: プロモーションをブログからすべて行うのではなく、独自のカスタム タイプとして使用する理由は、他の種類のブログ投稿には不要なカスタム フィールドが必要だったからです。

4

2 に答える 2

0

wp_insert_data() にフィルターを追加することで、もっと簡単に行うことができます。たとえば、テーマの functions.php ファイルに次を追加します。

add_filter('wp_insert_post_data', 'post_to_other', 99, 2);

そのフィルターは、新しい投稿を追加するたびに実行されます。関数 post_to_other() では、どのタイプの投稿が送信されているかを確認します。プロモーションの場合は、2 番目のコピーをニュース アイテムとして挿入します。

function post_to_other($post_id, $post){

/** check $post to see what type it is, if it's a promotion */
if($post->post_type == 'promotion'){
$second_post = array(
            'post_type'=> 'post',
            'post_title'=> $post->post_title,
            'post_name' =>$post->post_name,
            'post_content'=> $post->post_content,
            'post_author'=> $post->post_author,
            'post_status'=> 'publish',
            'tax_input'=> array('taxonomy_name'=>array('news'))
            );
            wp_insert_post($second_post);
}

}

私はドアを使い果たしているので、正確なコードを再確認する時間はありませんが、それが基本的な構造です。tax_input ビットはオプションで、必要に応じてカテゴリを指定できます。おそらく少し調整する必要がありますが、それが基本です。

于 2013-07-05T16:52:51.883 に答える