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 ビットはオプションで、必要に応じてカテゴリを指定できます。おそらく少し調整する必要がありますが、それが基本です。