Estou criando um tema que mostrará trechos na página inicial para potencialmente dezenas de postagens. Não tenho trechos manuais em todas as minhas postagens, por isso $post->post_excerpt
está vazio para muitas postagens. No caso de não haver um trecho manual, eu gostaria de usar a função interna get_the_excerpt (), mas ela não está disponível fora do loop.
Rastreando a função, parece que ele usa o wp_trim_excerpt do wp-includes / formatting.php para criar trechos em tempo real. Estou chamando isso no meu código como wp_trim_excerpt( $item->post_content )
, mas está simplesmente retornando o conteúdo completo. Estou fazendo algo errado?
Sei que posso criar minha própria função para criar um trecho, mas gosto de usar funções internas sempre que possível, mantendo meu código compatível com outros possíveis plugins / filtros.
http://adambrown.info/p/wp_hooks/hook/wp_trim_excerpt?version=3.0&file=wp-includes/formatting.php
$myvar = apply_filters( 'the_excerpt', $myvar );
Respostas:
Desde o WP 3.3.0,
wp_trim_words()
é útil se você conseguir obter o conteúdo para o qual deseja gerar um trecho. Espero que seja útil para alguém e economize na criação de sua própria função de contagem de palavras.http://codex.wordpress.org/Function_Reference/wp_trim_words
fonte
wp_trim_excerpt()
tem um pouco de mecânica curiosa - se alguma coisa é passada para ela, ela não faz nada.Aqui está a lógica básica por trás disso:
get_the_excerpt()
verifica trecho manual;wp_trim_excerpt()
grita se não houver um trecho manual e cria um com conteúdo ou provocação.Ambos estão intimamente ligados a variáveis globais e, portanto, Loop.
Fora do loop, é melhor remover o código
wp_trim_excerpt()
e escrever sua própria função de apara.fonte
Atualizar:
Aqui está um derivado de wp_trim_excerpt () que eu usei. Funciona perfeitamente. Derivado do Wordpress versão 3.0.4
fonte
Aqui está minha opinião sobre um "trim_excerpt" que usa o objeto de postagem ou um ID de postagem como parâmetro.
Obviamente, com base no que é essencial. Não sei por que isso (e get_the_author ()) não tem equivalentes sem loop.
fonte
+1 a Rast. É muito estranho que não exista get_the_excerpt ($ post-> ID), quando deveria ser bastante óbvio que deveria. Enfim, aqui está o wp_trim_excerpt () no wordpress versão 3.0.4:
http://core.trac.wordpress.org/browser/tags/3.0.4/wp-includes/formatting.php
Você pode ver na linha 1826 que está vinculada à variável global $ post via get_the_contents. E sim, não tenho ideia do que eles estavam pensando. Mas a partir daqui, substitua o get_the_content por $ text no seu próprio my_excerpt, e ele deve se comportar de maneira semelhante.
fonte
A função get_the_content () retornaria o conteúdo completo se $ more! = 0. Você deve definir a variável global $ more como 0 para garantir que o trecho da função get_the_content () retorne.
Função wp_trim_excerpt () modificada:
fonte
Usando as respostas de outras pessoas acima, aqui está uma resposta mais simples que parece funcionar bem:
Estou usando-o nas
<meta>
tags de uma função para definir as descrições do OpenGraph. Então, eu apenas adiciono:fonte