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