J'ai un code qui appelle get_the_title()
et cela fonctionne, mais get_the_excerpt()
retourne vide. Comment puis-je le faire fonctionner?
Ce code se trouve dans un plugin appelé "WP Facebook Open Graph protocol". Voici la partie que je veux changer:
if (is_singular('post')) {
if (has_excerpt($post->ID)) {
echo "\t<meta property='og:description' content='".esc_attr(strip_tags(get_the_excerpt($post->ID)))."' />\n";
}else{
echo "\t<meta property='og:description' content='". [?] ."' />\n";
}
}else{
echo "\t<meta property='og:description' content='".get_bloginfo('description')."' />\n";
}
Ici, has_excerpt
échouez toujours et get_the_excerpt($post->ID)
ne fonctionnent plus (obsolète).
Alors, comment puis-je afficher l'extrait là-bas?
ps: j'utilise aussi le plugin "Advanced Exterpt"
my_excerpt($post->post_content, get_the_excerpt())
et en utilisant lamy_excerpt()
fonction de wordpress.stackexchange.com/questions/6961/…the_post()
(cela fonctionne aussi sur le modèle de publication unique) avant de l'appelerget_the_excerpt()
pour configurer les données nécessaires pour vous.Réponses:
J'ai trouvé cette question en cherchant comment faire cela sans l'objet post.
Mes recherches supplémentaires ont révélé cette technique élégante:
$text = apply_filters('the_excerpt', get_post_field('post_excerpt', $post_id));
la source
$post
variable globale.$post_id
est défini (quelle est la valeur de$post_id
? ET$post_id
est un ID de poste valide et légitime.Comme il semble que vous ayez déjà l'objet post dont vous avez besoin de l'extrait, vous pouvez simplement forcer les choses à fonctionner:
La
setup_postdata()
fonction globalisera l'$post
objet et le rendra disponible pour l'ancienne fonction de boucle régulière. Lorsque vous êtes à l'intérieur de la boucle, vous appelezthe_post()
et cela configure les choses pour vous ... en dehors de la boucle, vous devez la forcer manuellement.la source
$post
variable globale , sinon les fonctions commethe_title()
ne fonctionnent pas correctement."global $post;$post = $post_object;setup_postdata( $post );$excerpt = get_the_excerpt();
setup_postdata($post);
FTW !!!!Essaye ça:
Créez une nouvelle fonction dans functions.php, puis appelez-la depuis n'importe où.
Voici un article décrivant le code.
la source
Maintenant, vous pouvez simplement utiliser la
get_the_excerpt( $postID )
fonction. Depuis: WordPress 4.5.0 a introduit le$post
paramètre.la source
wp_trim_excerpt
filtre renverra l'extrait pour le message actuel.l'a obtenu en utilisant
my_excerpt($post->post_content, get_the_excerpt())
et en utilisant lamy_excerpt()
fonction à l' aide de wp_trim_excerpt pour obtenir the_excerpt () en dehors de la bouclela source
Dans le cas où vous n'avez pas l'objet post, voici une courte fonction comme celle de Withers.
la source
C'est pour quand vous voulez utiliser en
get_the_excerpt()
dehors de la boucle:la source
Si vous souhaitez générer l'extrait automatiquement à partir du contenu sur une seule ligne - vous pouvez utiliser une
wp_trim_words
fonction comme celle-ci:la source
la source