web-dev-qa-db-fra.com

Comment limiter le contenu d'un article et en supprimer la légende

J'utilise cette fonction pour limiter le contenu de mes thèmes. Mais le problème est que chaque fois que j'appelle la fonction, elle affiche également la légende de l'image. Je souhaite supprimer la légende de l'image lors de l'appel de la fonction_content_limit.

Voici le code:

function the_content_limit($max_char, $more_link_text = '', $stripteaser = 0, $more_file = '') {

    $content = get_the_content($more_link_text, $stripteaser, $more_file);

    $content = apply_filters('the_content', $content);

    $content = str_replace(']]>', ']]>', $content);

    $content = strip_tags($content);



   if (strlen($_GET['p']) > 0) {

      echo "";

      echo $content;

      echo "&nbsp;<a href='";

      the_permalink();

      echo "'>"."Read More &rarr;</a>";

      echo "";

   }

   else if ((strlen($content)>$max_char) && ($espacio = strpos($content, " ", $max_char ))) {

        $content = substr($content, 0, $espacio);

        $content = $content;

        echo "";

        echo $content;

        echo "...";

        echo "&nbsp;<a href='";

        the_permalink();

        echo "'>"."</a>";

        echo "";

   }

   else {

      echo "";

      echo $content;

      echo "&nbsp;<a href='";

      the_permalink();

      echo "'>"."Read More &rarr;</a>";

      echo "";

   }

}
1
pervez

Les légendes d'images dans Wordpress sont en réalité des codes courts. Les codes courts sont appliqués par le filtre:

$ content = apply_filters ('the_content', $ content);

Par exemple, Wordpress crée le code suivant dans votre contenu lorsque vous entrez une légende d'image:

 [caption id = "attachment_55" align = "alignleft" width = "127" caption = "Voici ma légende"] [/ légende] 

Vous devez toujours utiliser apply_filters () pour afficher correctement le contenu . (affichage du contenu sécurisé et tous les autres codes courts)

Si vous ne voulez pas de codes abrégés (ce qui est ce que cela ressemble, puisque vous faites un strip-tag), vous devriez simplement utiliser ceci:

 $ content = strip_shortcodes ($ content); 

Mais s'il s'agit spécifiquement de [légende] shortcodes, je suppose que cela pourrait fonctionner si vous voulez simplement ajouter une ligne de remplacement de chaîne à votre code:

 $ content = get_the_content ($ more_link_text, $ stripteaser, $ more_file); 
 // remove [légende] shortcode 
 $ content = preg_replace ("/\[légende. *\[\/caption \]/", '', $ content); 
 // les codes abrégés sont appliqués 
 $ content = apply_filters ('the_content', $ content); 
2
truemedia