WordPress utilise the_content() sans galerie ?
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')
0 commentaire