Por que não se pode obter o trecho por ID, como no título e na maioria dos outros elementos.
por exemplo. get_the_excerpt (ID). Eu sei como usá-lo com a função $ post-> post_excerpt, mas que não retorna parte do conteúdo se nenhum trecho foi inserido, simplesmente não retorna nada.
Então, o que estou tentando fazer é obter o trecho por ID, se houver um trecho, e se não houver um trecho com esse ID, mas houver algum conteúdo, para obter parte do conteúdo.
Como alguém faria isso?
Alguma ideia,
Maravilhoso ...
EDIT -
Código-fonte do loop conforme solicitado.
<?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;?>
Respostas:
Olá, Robin I. Knight:
Eu vejo
get_the_excerpt()
como uma função com design herdado. À medida que o uso do WordPress cresce, há muitos casos de uso mais recentes, onde ele não se encaixa, mas onde as funções mais recentes para obter dados diferentes. Um exemplo é o uso freqüente de uma$args
variedade de opções de funções.Mas é fácil de corrigir para suas necessidades. Aqui está uma função alternativa que você pode usar e colocar em qualquer lugar no
functions.php
arquivo do seu tema :Não testei, mas tenho certeza de que acertou. Se isso não atender às suas necessidades, por favor, elabore e talvez eu possa fazer outras sugestões.
fonte
setup_postdata($post)
no início do loop, como sugere o @Rarst. Se isso não funcionar, pode ser um plugin que você precisa desativar; você já tentou isso? E você provavelmente não quer chamá-lo,get_the_excerpt_id()
porque o WordPress pode adicionar essa função no futuro e quebrar seu site. E você provavelmente poderia ficar sem a função no seu loop usando em seuforeach($stories as $story): global $post; $post = $story;
lugar.A mecânica do trecho é extremamente confusa. Não é uma resposta precisa para sua pergunta, mas, em geral, se você precisar fazer tags de modelo, específicas para Loop, funcionarem com a matriz retornada,
get_posts()
é possível emular o Loop assim:fonte
setup_postdata()
da consulta global não for afetado e apenas os dados de publicação precisarem ser redefinidos.Há uma nova função desde 3.3.0: wp_trim_words
Estou usando-o fora do loop da seguinte maneira:
Isso não deve ser confundido com o wp_trim_excerpt, que aparentemente só funciona dentro do loop, já que ele chama the_content () internamente.
fonte
Apenas para acrescentar à resposta de MikeSchinkel, que por algum motivo não funcionaria para mim. Eu tive que adicionar a linha setup_postdata para fazê-lo funcionar.
}
Estou assumindo que, se você estiver usando isso fora do loop, não deve interferir com outros setup_postdata.
Felicidades
fonte
Com base na resposta do @ Maxime, isso funcionaria?
Parece bastante direto para mim, mas estou me perguntando se estou perdendo alguma coisa.
fonte
Se TODAS as suas postagens tiverem a
<!--more-->
tag, você poderá usar o seguinte com o código acima:Obviamente, se você tiver alguma postagem que não tenha a
<!--more-->
tag, elas serão mostradas na íntegra. Funciona na minha situação, mas não para todos ...fonte
Eu vejo
get_the_excerpt()
como uma função com design herdado. À medida que o uso do WordPress cresce, há muitos casos de uso mais recentes, onde ele não se encaixa, mas onde as funções mais recentes para obter dados diferentes. Um exemplo é o uso freqüente de uma$args
variedade de opções de funções.Mas é fácil de corrigir para suas necessidades. Aqui está uma função alternativa que você pode usar e colocar em qualquer lugar no
functions.php
arquivo do seu tema :Apenas para acrescentar à resposta de MikeSchinkel, que por algum motivo não funcionaria para mim. Eu tive que adicionar a linha setup_postdata para fazê-lo funcionar.
fonte
wp_reset_post_data()
funcionar dentro do loop?Este é um pouco de duas linhas que eu uso muito utilizando wp_trim_words . Eu constantemente me vejo precisando da abreviação e leio mais funcionalidades fora do loop. Alguém mais pode achar isso útil. Então é isso que eu uso para:
Coloquei isso em linha, diretamente no modelo personalizado que estou editando.
Demolir
1.O conteúdo do excerto
Obter o trecho por ID da postagem, mas obter conteúdo da postagem Se nenhum trecho foi definido.
Estou usando a abreviação If / Else PHP .
2. Comprimento da palavra
Defina a quantidade de palavras no trecho para 20
3. Escolha Ler mais conteúdo (link / texto)
Eu costumava
$dapost->guid
obter o URL, porque não precisava de URLs amigáveis e queria evitar outra chamada para o banco de dados. Você sempre pode usar get_the_permalink.Veja wp_trim_words na documentação do Wordpress.
fonte
Isso funcionou para mim:
fonte
No WP 4.5.0 é possível usar o ID da postagem como parâmetro
get_the_excerpt( $post->ID )
Fonte: https://developer.wordpress.org/reference/functions/get_the_excerpt/
fonte
Isso é mais rápido:
fonte