Pourquoi ne peut-on pas obtenir l'extrait par ID comme avec le titre et la plupart des autres éléments.
par exemple. get_the_excerpt (ID). Je sais comment l'utiliser avec la fonction $ post-> post_excerpt mais cela ne retourne pas une partie du contenu si aucun extrait n'a été entré, il ne renvoie rien.
Donc, ce que j'essaie de faire est d'obtenir l'extrait par ID s'il y a un extrait, et s'il n'y a pas d'extrait avec cet ID mais qu'il y a du contenu, pour obtenir une partie du contenu à la place.
Comment ferait-on cela.
Des idées,
Merveilleux ...
MODIFIER --
Bouclez le code source comme demandé.
<?php $stories = get_posts('category_name=feedback&numberposts=4');
foreach ($stories as $post) :
$title = $post->post_title;
$excerpt = get_the_excerpt_id($post->ID);
$thumb = get_the_post_thumbnail($post->ID,array(60, 60, true));?>
<div class="textstandard_white" style="font-size:14px; line-height:22px; padding-top:10px;"><b><a href="<?php echo get_permalink($post->ID);?>"><?php echo $title;?></a></b></div><div align="left" style="height:18px; width:82px; background:url(http://www.divethegap.com/update/z-images/structure/icons/stars.png) left top no-repeat;"><div id="stars<?php echo $post->ID;?>" align="left" style="height:18px; background:url(http://www.divethegap.com/update/z-images/structure/icons/stars_glow.png) left top no-repeat;">
</div>
</div>
<script type="text/javascript">
var width<?php echo $post->ID;?> = ((<?php
$Rating = get_post_meta($post->ID, "Rating", true);
echo $Rating;
?> * 20) + '%')
$('#stars<?php echo $post->ID;?>').css('width', width<?php echo $post->ID;?>);
</script><div class="textstandard_white" style="padding-top:6px; font-size:10px; color:#BBB; padding-bottom:10px; border-bottom:1px dotted #BBB; min-height:70px;"><div style="float:left; padding-right:6px; padding-bottom:6px;"><div style="background:#FFF; border:1px solid #FFF;
border-radius: 4px; -moz-border-radius: 4px ; -webkit-border-radius: 4px; padding:4px;"><a href="<?php echo get_permalink($post->ID);?>"><?php echo $thumb;?></a></div></div>
<?php echo $excerpt;?></div>
<?php endforeach;?>
Réponses:
Salut @Robin I. Knight:
Je considère
get_the_excerpt()
comme une fonction avec un design hérité. À mesure que l'utilisation de WordPress a augmenté, il existe de nombreux cas d'utilisation plus récents où cela ne convient pas, mais où les nouvelles fonctions pour obtenir des données différentes le font. Un exemple est l'utilisation désormais fréquente d'un$args
tableau d'options de fonctions.Mais il est facile de corriger vos besoins. Voici une fonction alternative que vous pouvez utiliser et que vous pouvez placer n'importe où dans le
functions.php
fichier de votre thème :Je ne l'ai pas testé mais je suis sûr que je l'ai bien fait. Si cela ne répond pas à vos besoins, veuillez élaborer et je pourrai peut-être faire d'autres suggestions.
la source
setup_postdata($post)
au début de votre boucle, comme le suggère @Rarst. Si cela ne fonctionne pas, il peut s'agir d'un plugin que vous devez désactiver; as-tu essayé ça? Et vous ne voudrez probablement pas l'appelerget_the_excerpt_id()
car WordPress pourrait ajouter cette fonction à l'avenir et casser votre site. Et vous pourriez probablement vous passer de la fonction dans votre boucle en utilisant à laforeach($stories as $story): global $post; $post = $story;
place.La mécanique de l'extrait est extrêmement déroutante. Ce n'est pas une réponse précise à votre question, mais en général, si vous devez créer des balises de modèle, spécifiques à Loop, travaillez avec le tableau retourné par
get_posts()
vous pouvez émuler Loop comme ceci:la source
setup_postdata()
la requête globale n'est pas affectée et que seules les données de publication doivent être réinitialisées.Il existe une nouvelle fonction depuis la 3.3.0: wp_trim_words
Je l'utilise en dehors de la boucle comme suit:
Cela ne doit pas être confondu avec wp_trim_excerpt qui ne fonctionne apparemment que dans la boucle, car il appelle the_content () en interne.
la source
Juste pour ajouter à la réponse de MikeSchinkel, qui pour une raison quelconque ne fonctionnerait pas pour moi. J'ai dû ajouter la ligne setup_postdata pour que cela fonctionne.
}
Je suppose que si vous utilisez cela en dehors de la boucle, cela ne devrait pas interférer avec les autres setup_postdata en cours.
À votre santé
la source
S'appuyant sur la réponse de @ Maxime, cela fonctionnerait-il?
Cela me semble assez simple, mais je me demande si je manque quelque chose.
la source
Si TOUS vos messages ont la
<!--more-->
balise, vous pouvez utiliser ce qui suit avec votre code ci-dessus:Bien sûr, si vous avez des articles qui n'ont pas de
<!--more-->
balise, ils seront affichés dans leur intégralité. Fonctionne dans ma situation, mais pas pour tous ...la source
Je considère
get_the_excerpt()
comme une fonction avec un design hérité. À mesure que l'utilisation de WordPress a augmenté, il existe de nombreux cas d'utilisation plus récents où cela ne convient pas, mais où les nouvelles fonctions pour obtenir des données différentes le font. Un exemple est l'utilisation désormais fréquente d'un$args
tableau d'options de fonctions.Mais il est facile de corriger vos besoins. Voici une fonction alternative que vous pouvez utiliser et que vous pouvez placer n'importe où dans le
functions.php
fichier de votre thème :Juste pour ajouter à la réponse de MikeSchinkel, qui pour une raison quelconque ne fonctionnerait pas pour moi. J'ai dû ajouter la ligne setup_postdata pour que cela fonctionne.
la source
wp_reset_post_data()
fonctionner à l'intérieur de la boucle?Ceci est un petit deux lignes que j'utilise beaucoup en utilisant wp_trim_words . Je me retrouve constamment à avoir besoin de l'abréviation et de lire plus de fonctionnalités en dehors de la boucle. Quelqu'un d'autre peut trouver cela utile. Voici donc ce que j'utilise pour:
Je mets cela en ligne, directement dans le modèle personnalisé que je modifie.
Panne
1.Le contenu de l'extrait
Obtenez l'extrait par ID de publication, mais obtenez le contenu de la publication si aucun extrait n'a été défini.
J'utilise le raccourci If / Else PHP .
2. Longueur du mot
Définissez le nombre de mots dans l'extrait sur 20
3. Choisissez le contenu ReadMore (lien / texte)
J'avais l'habitude
$dapost->guid
d'obtenir l'URL, car je n'avais pas besoin d'URL conviviales et je voulais éviter un autre appel à la base de données. Vous pouvez toujours utiliser get_the_permalink.Voir wp_trim_words dans la documentation Wordpress.
la source
Cela a fonctionné pour moi:
la source
Depuis WP 4.5.0, il est possible d'utiliser l'ID de message comme paramètre
get_the_excerpt( $post->ID )
Source: https://developer.wordpress.org/reference/functions/get_the_excerpt/
la source
C'est plus rapide:
la source