publish_post
およびwp_insert_post
フックを使用して、Worpdress Multisite環境で投稿が公開されたときに、その投稿を別のサイトにコピーするためのプラグインを作成しようとしています。コードは以下の通りです
function copy_post_to_blog($post_id) {
$post = get_post($post_id, ARRAY_A); // get the original post
$post['ID'] = ''; // empty id field, to tell wordpress that this will be a new post
switch_to_blog(main_blog_id()); // switch to target blog
wp_insert_post($post); // insert the post
restore_current_blog(); // return to original blog
}
add_action('publish_post', 'copy_post_to_blog');
コードは動作していてブログに投稿データを挿入していますが問題は、自分でブラウザの実行を停止するまでループが新しい投稿の挿入を停止しないことです。初めてデータベースに投稿を挿入した後に停止するはずですが、そうではなく、無限に投稿を挿入し始めます。どうやってこの問題に乗るのか手伝ってください。
よろしくお願いします。
wp_insert_post()
関数は再びpublish_post
フックを起動し、無限ループに陥ります。この変更を試してください。
remove_action('publish_post', 'copy_post_to_blog');
wp_insert_post($post);
add_action('publish_post', 'copy_post_to_blog');