web-dev-qa-db-fra.com

supprimer les balises <p> de the_content

J'ai un format de publication de Image et je rencontre un problème où l'image est encapsulée par une balise <p>. Je souhaite supprimer cette balise (en particulier la version single.php) de ces types de publication.

Comment puis-je accéder à la mise en forme d'un thème et supprimer les balises <p> ou créer le format de mon choix pour la sortie de ce type de message sans affecter les messages d'un format de message différent?

6
Smittles

Wordpress ajoute automatiquement les balises <p> au contenu. Donc, il apparaît lors du chargement du contenu. C'est avec le filtre wpautop. Nous allons donc supprimer ce filtre pour le type de message image uniquement. Vous pouvez gérer cela en ajoutant le code suivant dans le fichier functions.php.

// Add the filter to manage the p tags
add_filter( 'the_content', 'wti_remove_autop_for_image', 0 );

function wti_remove_autop_for_image( $content )
{
     global $post;

     // Check for single page and image post type and remove
     if ( is_single() && $post->post_type == 'image' )
          remove_filter('the_content', 'wpautop');

     return $content;
}

is_single() vérifie si un seul message est affiché.

8
Chittaranjan

Si ce type de publication s'appelle "image", vous pouvez créer un seul modèle pour gérer uniquement l'affichage du type de publication.

Copiez simplement votre fichier 'single.php' et renommez la copie 'single-image.php'. Maintenant, vous pouvez contrôler uniquement les messages image. Pour supprimer les balises, j'aime utiliser la fonction strip_tags(). Si vous imprimez le contenu de l'article avec the_content(), le filtre de contenu est déjà appliqué, les lignes étant entourées de balises <p>.

Voici un exemple de la façon dont vous pourriez obtenir le contenu de votre image sans les balises:

$imageContent = get_the_content();
$stripped = strip_tags($imageContent, '<p> <a>'); //replace <p> and <a> with whatever tags you want to keep after the strip
echo $stripped;

J'espère que cela t'aides!

4
CreMedian

Ajoutez simplement la ligne de code ci-dessous dans le fichier functions.php de votre thème

Pour le contenu:

remove_filter( 'the_content', 'wpautop' );

Pour extrait

remove_filter( 'the_excerpt', 'wpautop' );

en savoir plus: https://codex.wordpress.org/Function_Reference/wpautop

2
Saiful Islam

Vous pouvez utiliser une classe de publication spécifique pour le single-post ou le single-format-standard et la masquer comme vous le souhaitez uniquement sur une seule page, afin d'éviter tout conflit pour les autres parties du site Web.

Exemple de code CSS *

.single-post .entry-content p:empty { display: none; }

Exemple de code CSS pour un format de publication spécifique Image

.single-format-image .entry-content p:empty { display: none; }
0
Maqk

si vous souhaitez supprimer d'une page ou d'un message particulier, vous pouvez appeler ce

<?php remove_filter ('the_content', 'wpautop'); the_content(); ?>
0
Muddasir

Vous pouvez utiliser get_the_content() au lieu de the_content(). Cela peut résoudre votre problème et une autre solution est identique à celle décrite par @Chittaranjan

0

Afin de supprimer la balise p du contenu, vous pouvez utiliser le code ci-dessous

<?php remove_filter ('the_content', 'wpautop'); ?>
0
Rahul S

Une autre façon de le coder à partir de la solution de @chittaranjan

add_filter( 'the_content', 'remove_autop_for_image', 0 );

function remove_autop_for_image( $content ) {
     global $post;

     if ( is_singular('image'))
          remove_filter('the_content', 'wpautop');

     return $content;
}
0
Brad Dalton