WordPress utilise the_content() sans galerie ?

Publié par Jean-Michel le

Est-il possible d’utiliser the_content() en excluant les galeries ? Je veux faire cela parce que j’ai besoin de la galerie affichée avec flexslider. J’intègre déjà flexslider. Si je veux montrer le contenu du post, par exemple : du texte, des images séparées et bien sûr une galerie. Il affichera la galerie avec flexslider, puis le contenu avec le texte, les images et la galerie à nouveau. Je ne veux pas que la galerie soit dupliquée.

<div class="entry-content">

    <?php $gallery = get_post_gallery( get_the_ID(), false );?>

    <div class="flexslider flexslider-gallery">
        <ul class="slides slides-gallery">
            <?php foreach( $gallery['src'] AS $src ){ ?>
                <li>
                    <img alt="Gallery image" src="<?php echo $src; ?>" />
                </li>
            <?php } ?>
        </ul> <!-- end .slides -->
    </div> <!-- end .flexslider -->

<?php the_content(); ?>
</div><!-- .entry-content -->

Solution n°1 trouvée

Deux manières:

1) La galerie WordPress est contenue dans une div avec la classe .gallery. Si flexsider n’utilise pas également cette classe, vous pouvez simplement définir votre CSS sur :

.gallery { display: none; }

2) Vous pouvez obtenir le contenu avec get_the_content, l’analyser à l’aide d’un analyseur DOM et supprimer la galerie.

L’option #1 est moins efficace, mais évite la complexité de l’analyse du DOM.

Aucune des deux méthodes n’est garantie de fonctionner si le site utilise un plugin de galerie non standard qui crée du HTML non WP.

Solution n°2 trouvée

Bon voici la solution :

Ajouter à functions.php

function remove_shortcode_from($content) {
  $content = strip_shortcodes( $content );
  return $content;
}

puis appelez-le quand vous en avez besoin, dans mon cas dans content-gallery.php :

add_filter('the_content', 'remove_shortcode_from');
the_content();
remove_filter('the_content', 'remove_shortcode_from')
Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *