Pergunta sobre Desenvolvimento com WordPress do WordPress: Conflito entre filtro de material e trecho

Um usuário perguntou 👇

Olá,

Em um tópico anterior, perguntei como poderia hackear meu plug-in no modelo de arquivo/categoria, pois queria adicionar alguns meta-campos personalizados. Consiga.

Então agora eu tenho duas funções separadas que cortam the_content() e the_excerpt() filter (para que meus campos personalizados também sejam mostrados):


function my_custom_excerpt( $excerpt ) { 
	if ( is_tax('my_custom_taxonomy') ) {
		$date = // get setting
		$time = // get setting
		$excerpt="<div class="meta">" . $date . $time '</div><div class="excerpt">' . $excerpt . '</div>';   
	}
	return $excerpt; 
}
add_filter( 'the_excerpt', 'my_custom_excerpt' );

function my_custom_content( $content ) { 
	if ( is_tax('my_custom_taxonomy') ) {
		$date = // get setting
		$time = // get setting
		$content="<div class="meta">" . $date . $time '</div><div class="content">' . $content . '</div>';   
	}
	return $content; 
}
add_filter( 'the_content', 'my_custom_content' );

Mas há um conflito quando a passagem é exibida em uma página (categoria/arquivo). O conteúdo parece ser (modificado) the_content() use um filtro para criar o texto do trecho; agora os metacampos personalizados estão no texto do meu trecho (a marcação HTML é removida, é claro).

Existe alguma correção para isso?

orientar

(@instantpaydayloans)

faz 3 anos

Se você quiser voltar sem nenhuma entrada na caixa meta pull, crie um texto a partir do conteúdo: get_the_content(). Você pode usar a função básica wp_trim_words() para definir a contagem de palavras e definir o texto para todo o conteúdo. Exemplo:

$excerto = get_the_content(); $extrair = esc_attr(strip_tags(extrair($extrair))); $excerto = wp_trim_words($trecho, $num_palavras = 55, $else = NULL);

(@bcworkz)

faz 3 anos

Oi Cara!

Não tenho certeza se vou entender o que você vê como um conflito. Sua meta adicionada exibe the_content de forma imprevisível em trechos, então seu retorno de chamada não sabe se a meta deve ser adicionada ou não?

Quando the_excerpt() é chamado, o WP tenta usar o valor da meta box de extração. Se não estiver presente, um trecho de the_content() e quaisquer filtros aplicados são gerados automaticamente. Seu problema é que seu retorno de chamada não sabe qual passagem está sendo executada. A solução seria ativar o filtro “the_excerpt” antecipadamente usando um pequeno argumento de precedência ao adicioná-lo. Remova seu retorno de chamada “the_content” neste momento. Então você pode ter certeza de que não terá o meta-conteúdo, independentemente de qual trecho for usado.

No entanto, se você adicionar sua meta neste momento, ela aparecerá na frente de quaisquer declarações geradas automaticamente. Você precisará de outro Hook para adicionar “the_excerpt” com prioridade maior que 10 para garantir que meta adicional seja adicionada ao final do trecho gerado automaticamente. (O trecho gerado automaticamente é feito com seu próprio bastidor em “the_excerpt”) Neste Hook posterior você pode restaurar sua chamada “the_content”, pois o código de trecho gerado automaticamente já está em execução e não haverá buscas adicionais de “The_content ” adicionado para não ser usado neste ciclo de saída.

lançador de tópicos

(@guia07111975)

faz 3 anos

Olá @instantpaydayloans e @bcworkz

Obrigado pela sua resposta! Agora criei uma extração personalizada, sem usar the_content() filtro:


function my_custom_excerpt( $excerpt ) { 
	if ( is_tax('my_custom_taxonomy') && in_the_loop() ) {
		$date = // get setting
		$time = // get setting

		$post = get_post( get_the_ID() );
		$content = wp_strip_all_tags( $post->post_content );
		$summary = esc_attr( wp_trim_words( $content, 55, ' [&hellip;]' ) );
		$excerpt="<div class="meta">" . $date . $time '</div><div class="excerpt">' . $summary . '</div>';   
	}
	return $excerpt; 
}
add_filter( 'the_excerpt', 'my_custom_excerpt' );

Isso funciona bem 🙂 Resolvido!

@bcworkz: Você ainda está no fórum, depois de todo esse tempo?! E ainda nenhum site pessoal você pode conferir?

orientar

Isto foi útil?

0 / 0

Deixe uma resposta 0

O seu endereço de email não será publicado. Campos obrigatórios são marcados *