web-dev-qa-db-fra.com

impossible d'arrêter la boucle lors de l'utilisation de wp_insert_post avec le hook publish_post

J'essaie de créer un plugin pour copier un article sur un autre site quand un article est publié dans environnement multisite Worpdress à l'aide de hook publish_post et wp_insert_post. Le code est ci-dessous

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');

Le code fonctionne et insère des données de publication dans le blog , mais le problème est que la boucle n'arrête pas d'insérer une nouvelle publication jusqu'à ce que j'arrête le chargement du navigateur par le navigateur. . Comme cela devrait cesser après avoir inséré post dans la base de données pour la première fois, ce n'est pas le cas et commence à insérer post indéfiniment. S'il vous plaît, aidez-moi à résoudre ce problème.

Je vous en remercie d'avance.

2
Syed Aqeel

La fonction wp_insert_post() déclenche à nouveau le hook publish_post, ce qui conduit à une boucle infinie. Essayez ce changement:

remove_action('publish_post', 'copy_post_to_blog');
wp_insert_post($post);
add_action('publish_post', 'copy_post_to_blog');
1
johnh10