J'ai créé un shortcode pour une page de plan du site. Lorsque je modifie la page et que je clique sur Mettre à jour, un en-tête déjà envoyé contient une erreur. Ci-dessous mon shortcode et les deux messages d'erreur. Je me demande si je dois intégrer ob_start()
et ob_get_clean()
dans ma fonction, mais je ne suis pas sûr à 100% de la façon dont elle devrait être formatée.
function site_map2( $atts ) {
$atts = shortcode_atts(
array(
'exclude' => '',
), $atts );
return '<ul>' . wp_list_pages('exclude=' . $atts['exclude'] . '&sort_column=post_title&title_li=') . '</ul>';
}
add_shortcode( 'SiteMap2', 'site_map2' );
Voici les messages d'erreur:
Avertissement: impossible de modifier les informations d'en-tête - en-têtes déjà envoyés par (sortie démarrée à /public_html/wp-includes/post-template.php:1205) dans /public_html/wp-admin/post.php à la ligne 197
Avertissement: impossible de modifier les informations d'en-tête - en-têtes déjà envoyés par (sortie démarrée à /public_html/wp-includes/post-template.php:1205) dans /public_html/wp-includes/pluggable.php à la ligne 1167
Le réglage de ma fonction ci-dessous a résolu le problème, mais je voulais m'assurer que c'était la bonne façon de gérer le code court. J'ai ajouté ob_start (); et ob_get_clean (); à la fonction. Est-ce la bonne façon de gérer quelque chose comme ça?
function site_map2( $atts ) {
$atts = shortcode_atts(
array(
'exclude' => '',
), $atts );
ob_start();
echo '<ul>' . wp_list_pages('echo=false' . '&exclude=' . $atts['exclude'] . '&sort_column=post_title&title_li=') . '</ul>';
return ob_get_clean();
}
add_shortcode( 'SiteMap2', 'site_map2' );
Vous devez renvoyer la valeur de wp_list_pages
et non 'echo' par défaut.
'écho'
(bool) S'il faut ou non faire écho à la liste des pages. Vrai par défaut.
return '<ul>' . wp_list_pages( 'echo=false' . '&exclude=' . $atts['exclude'] . '&sort_column=post_title&title_li=') . '</ul>';