Je viens d'ajouter le code suivant à functions.php.
$my_post = array(
'post_title' => 'Test Title 02',
'post_content' => 'Test Des 02',
'post_status' => 'publish',
'post_author' => 1
);
wp_insert_post( $my_post );
Il y a 8 postes ont été créés avec seulement une page de chargement. On dirait que le fichier functions.php est appelé 8 fois pour un seul chargement de page. Pourquoi donc? Comment ça se passe?
Ajoutez un plugin tel que Kint Debugger
+ Debug Bar
et ajoutez le code suivant à votre functions.php
.
global $wp;
ob_start('kint_debug_ob');
d($wp);
ob_end_flush();
Lorsque vous vérifiez la barre de débogage, vous devriez voir la trace qui vous indiquera dans quel ordre les fonctions ont été activées. Le chargement 8 fois est assez élevé pour une seule requête.
Il existe également une fonction de trace que vous pouvez utiliser qui est moins détaillée si vous ne voulez pas emprunter la route du plugin - wp_debug_backtrace_summary
.
echo "<!----- BACKTRACE / START ----->";
print_r ( wp_debug_backtrace_summary() );
echo "<!----- BACKTRACE / END ----->";
Il est un peu étrange d’avoir un wp_insert_post
aléatoire dans votre functions.php
, alors peut-être que l’enveloppement de votre logique dans un crochet comme init
pourrait vous aider dans l’intervalle.
Il est également possible qu'il ne s'agisse pas d'une demande unique. heartbeats
enverra une requête ping au serveur si vous êtes dans la section admin et que c'est possible wp-cron
peut le charger également (mais je ne suis pas sûr).
Pour vérifier tout cela, activez WP_DEBUG_LOG
et enregistrez les événements.
Solution - TOUJOURS PUT les commandes dans les actions:
add_action('init', 'my_func');
function my_func(){
//.......
//.......
wp_insert_post( $my_post );
}
de plus, pour éviter les répétitions, placez ce code en haut du fichier .php:
if (defined('my_wpse_9999')) || !define('my_wpse_9999',true)) return;