web-dev-qa-db-fra.com

Comment supprimer un <p> </ p> vide dans le shortcode de la légende wp?

J'ai récemment ajouté une légende à mon image dans WordPress et il existe maintenant une balise <p></p> vide après la balise <img>. Cela a brisé mon style.

Quelqu'un peut-il dire comment l'enlever?

Merci pour l'aide.

 demo 

2
Bao

Supprimer wpautop:

Ceci est probablement de wpautop . Pour résoudre ce problème, écrivez d'abord le CODE suivant dans le fichier functions.php de votre thème:

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

Si cela ne résout pas le problème, cela peut signifier que <p></p> est entré dans votre base de données ou vous avez une nouvelle ligne vide dans votre [caption][/caption] Shortcode. Accédez à l'article et supprimez le <p></p> ou le empty new line à partir du mode Text de l'éditeur WordPress.

Ceci devrait régler votre problème.

Solution CSS alternative:

Vous pouvez utiliser le code CSS pour masquer <p></p> sous la forme cette réponse suggéré. Cependant, avec cette méthode, il sera toujours dans votre HTML & ça ne sert à rien de le créer puis de le cacher entièrement avec CSS. Il est préférable de l'enlever dans ce cas avec le code ci-dessus.

Cependant, si vous souhaitez conserver wpautop pour une raison quelconque (vous l'utilisez peut-être pour le formatage ailleurs sur le site), vous pouvez uniquement cibler les balises <p></p> dans les légendes avec les CSS suivants:

.wp-caption > p:empty  {
    display: none;
}

Ceci conservera le formatage de wpautop ailleurs sur votre site et résoudra en même temps le problème d'affichage des légendes.

4
Fayaz

Vous pouvez le faire sur le hook do_shortcode_tag.

function remove_empty_wp_caption_text($output, $tag) {
  if ($tag === 'caption') {
    $output = str_replace('<p class="wp-caption-text"> </p>', '', $output);
  }

  return $output;
}
add_filter('do_shortcode_tag', 'remove_empty_wp_caption_text', 10, 2);

Ce qui est bien avec cette approche, c'est que la fonction ne sera pas exécutée à moins que le shortcode [caption] soit appelé.

0
Jake Bellacera

Vous pouvez également le supprimer en utilisant str_replace pour remplacer les balises p par le filtre the_content:

function wpse256087_content_filter($content) {

    $content = str_replace( '<p></p>', '', $content );

    return $content;
}

add_filter( 'the_content', 'wpse256087_content_filter' );
0
Tunji

Il n'est pas recommandé de remplacer la fonctionnalité native de WordPress. Au lieu de cela, vous pouvez masquer les éléments vides en utilisant CSS

p:empty  {
    display: none;
}

Ce sera les éléments vides.

0
Maqk