web-dev-qa-db-fra.com

boucle wordpress personnalisée - masquer le contenu iframe

J'essaie de créer une boucle personnalisée pour afficher mes messages dans un style différent.

Dans mes messages, j'ai principalement des vidéos Youtube et du texte. Dans ma boucle de messages, je n'ai besoin d'afficher que la vignette de l'image sélectionnée des messages et du texte, mais je ne souhaite afficher aucun iframes avec mes vidéos Youtube.

Je cherchais des solutions et j'ai trouvé ceci - Afficher uniquement le texte en boucle WordPress sans perdre la mise en forme du texte - il devrait supprimer les iframes et les images, ce qui serait très bien pour moi, mais j'ai plusieurs messages en boucle, donc je ne Je ne souhaite vraiment pas affecter la fonction the_content() car elle est utilisée dans de nombreuses boucles différentes dans mon thème, si vous comprenez mon problème. Je ne suis pas vraiment un programmeur, donc c'est difficile pour moi.

edit 1J'ai ajouté votre code dans functions.php mais rien ne se passe. voici mon code dans le template:

<?php 
    global $post; 
    $args = array('orderby' => 'Rand', 'posts_per_page' => 1,); 

    $custom_posts = get_posts($args); foreach($custom_posts as $post) : setup_postdata($post); ?>

    <div class="hpvybirame">
    <div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
    <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>

    <?php show_only_thumbnails($content); ?>
    <?php echo get_the_post_thumbnail($thumbnail->ID, 'vlog-lay-c'); ?>
    </div>
    </div>
    <? endforeach; ?>
2
Robert Zelenka

la meilleure solution consiste à ajouter un filtre dans votre functions.php:

add_filter('the_content','show_only_thumbnails',99);

function show_only_thumbnails($content){
    if(is_home() && is_front_page()){
     //quote from :
     //http://wordpress.stackexchange.com/questions/218305/display-only-text-to-wordpress-loop-without-loosing-the-text-formatting/218314#218314
     $content = preg_replace('/<iframe.*?>/', "", $content); // removes iframes
      return $content;
    }
   return $content;
}
0
sdx11

Je pense que vous devriez pouvoir y parvenir en utilisant la fonction is_main_query et le filtre the_content.

Leis_main_queryvérifie si la requête en cours est la requête principale ou secondaire de la boucle.

function wpse253491_strip( $content ) {
    if ( is_home() || is_front_page() && !is_main_query() ) {
        $content = preg_replace('#<\s*iframe[^>]*>.*?<\s*/\s*iframe>#msi', '', $content);
    }
    return $content;
}

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