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?
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é.
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!
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
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; }
si vous souhaitez supprimer d'une page ou d'un message particulier, vous pouvez appeler ce
<?php remove_filter ('the_content', 'wpautop'); the_content(); ?>
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
Afin de supprimer la balise p du contenu, vous pouvez utiliser le code ci-dessous
<?php remove_filter ('the_content', 'wpautop'); ?>
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;
}