web-dev-qa-db-fra.com

Ajouter une balise <! - more -> à un type de publication personnalisé

Je construis un site de portfolio pour un ami. Il a trois packages de photos distincts et peut-être vouloir en ajouter d'autres à l'avenir. J'ai donc créé un type de publication personnalisé appelé Packages afin qu'il puisse en ajouter autant qu'il le souhaite et qu'ils le souhaitent. 'apparaissons tous sur une seule page. J'ai créé un modèle single-packages.php afin que chaque package soit lié à une page sinple.php afin d'afficher le contenu complet, mais lorsque j'ajoute la balise 'more' dans l'éditeur, il ne divise pas le contenu et les La page des paquets crache tout plutôt que de simplement montrer le contenu avant la balise 'plus'.

Toute aide sur ce très apprécié.

remarque - je ne suis pas un expert PHP et ne comprend donc pas les suggestions de codage complexes

1
Evie Milo

Dans certaines situations, le $ more global doit être défini sur 0 avant d'appeler the_content () afin d'afficher le lien en savoir plus:

 global $more;
 $more = 0;
 the_content( '<span>Read More...</span>' );
2
Dave Romsey

J'ai eu le même problème et j'ai trouvé que c'était la meilleure solution:

<?php
   $content = get_the_content(); 
   $dot = "."; 
   $position = stripos ($content, $dot); 

   if($position) { 
        $offset = $position + 1; 
        $position2 = stripos ($content, $dot, $offset); 
        $first_one = substr($content, 0, $position);
        $first_two = substr($content, 0, $position2); 

        if($position2 > 120) {
           echo $first_one . '.';
        }

        else {
            echo $first_two . '.';
         }
   }

         else {  

         }

?>

Le code ci-dessus affiche deux premières phrases (l'extrait suivant) et si elles sont plus longues que 120 symboles, il affichera uniquement la première.

S'il n'y a pas de points dans le contenu, cela ne fait rien.

Maintenant, attachez simplement le lien En savoir plus après votre extrait:

<a class="read-more" href="<?php the_permalink(); ?>">Read more...</a> 

Et tout va bien.

Je ne suis pas sûr de savoir pourquoi "plus de balises" ne fonctionne pas pour certains types de publication personnalisés, mais j'ai passé beaucoup de temps à la comprendre et, après tout, j'ai terminé avec cette fonction idiote.

Je ne suis pas non plus un PHP programmeur et je sais que cette solution est assez longue et complexe, mais c'est la seule chose qui a fonctionné pour moi et j'étais au même endroit.

La fonction n'est pas parfaite et ne reconnaît pas les points après des mots tels que "etc." ou "par exemple", il traitera chaque point comme une fin de phrase.

0
Wordpressor