Eu tenho um código que chama get_the_title()
e funciona, mas get_the_excerpt()
retorna vazio. Como posso fazer funcionar?
Este código está dentro de um plugin chamado "WP Facebook Open Graph protocol". Aqui está a parte que eu quero mudar:
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";
}
Aqui, has_excerpt
sempre falhe e get_the_excerpt($post->ID)
não funcione mais (descontinuado).
Então, como posso exibir o trecho lá?
ps: também estou usando o plug-in "Advanced Excerpt"
my_excerpt($post->post_content, get_the_excerpt())
e usando amy_excerpt()
função de wordpress.stackexchange.com/questions/6961/...the_post()
(funciona também no modelo de postagem única) a função antes de chamá-get_the_excerpt()
lo, configurando os dados necessários para você.Respostas:
Encontrei essa pergunta ao analisar como fazer isso sem o objeto post.
Minha pesquisa adicional descobriu essa técnica inteligente:
$text = apply_filters('the_excerpt', get_post_field('post_excerpt', $post_id));
fonte
$post
variável global.$post_id
está definido (que é o valor de$post_id
E?$post_id
É um válido, legítimo pós ID.Como parece que você já possui o objeto de postagem para o qual precisa do trecho, basta forçar o trabalho:
A
setup_postdata()
função globalizará o$post
objeto e o disponibilizará para a função de loop antigo regular. Quando você está dentro do loop, você ligathe_post()
e isso define as coisas para você ... fora do loop, você precisa forçá-lo manualmente.fonte
$post
variável global , caso contrário, funções comothe_title()
não funcionam corretamente".global $post;$post = $post_object;setup_postdata( $post );$excerpt = get_the_excerpt();
setup_postdata($post);
FTW !!!!Tente o seguinte:
Crie uma nova função em functions.php e, em seguida, chame-a de qualquer lugar.
Aqui está uma postagem descrevendo o código.
fonte
Agora você pode simplesmente usar a
get_the_excerpt( $postID )
função Desde: WordPress 4.5.0 introduziu o$post
parâmetro.fonte
wp_trim_excerpt
filtro retornará o trecho para a postagem atual.consegui usando
my_excerpt($post->post_content, get_the_excerpt())
e usando amy_excerpt()
função de Using wp_trim_excerpt para obter the_excerpt () fora do loopfonte
Caso você não tenha o objeto de postagem, aqui está uma função curta como a de Withers.
fonte
Isto é para quando você deseja usar
get_the_excerpt()
fora do loop:fonte
Se você deseja gerar o trecho automaticamente a partir do conteúdo em uma linha - você pode usar uma
wp_trim_words
função como esta:fonte
fonte