Pregunta sobre Developing with WordPress de Wordpress:

Conflicto entre el material y el filtro de extracto

Un usuario preguntó 👇

Hola,

En un hilo anterior, pregunté cómo podía piratear mi plugin en la plantilla de archivo / categoría, ya que quería agregar algunos metacampos personalizados. Logré.

Así que ahora tengo dos funciones separadas que piratean the_content() y the_excerpt() filtro (por lo que también se muestran mis campos personalizados):


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' );

Pero hay un conflicto cuando el pasaje se muestra en una página (categoría / archivo). El contenido parece estar (modificado) the_content() usar un filtro para crear el texto del extracto; ahora los metacampos personalizados están en el texto de mi extracto (el marcado HTML se elimina, por supuesto).

¿Hay algún arreglo para esto?

Guido

(@instantpaydayloans)

hace 3 años

Si desea retroceder sin ninguna entrada en el cuadro de meta de extracción, cree texto a partir del contenido: get_the_content (). Puede utilizar la función básica wp_trim_words () para configurar el contador de palabras y configurar el texto de todo el contenido. Ejemplo:

$ extracto = get_the_content (); $ extracto = esc_attr (strip_tags (extracto ($ extracto))); $ extracto = wp_trim_words ($ extracto, $ num_words = 55, $ más = NULL);

(@bcworkz)

hace 3 años

¡Hola Guido!

No estoy seguro de si obtendré lo que usted ve como un conflicto. ¿Su meta agregada muestra the_content de manera impredecible en extractos, por lo que su devolución de llamada no sabe si la meta debe agregarse o no?

Cuando se llama the_excerpt (), WP intenta usar el valor del cuadro de meta de extracción. Si no está presente, se genera automáticamente un extracto de the_content () y cualquier filtro aplicado. Su problema es que su devolución de llamada no sabe qué pasaje se está ejecutando. La solución sería contratar el filtro «the_excerpt» temprano usando un pequeño argumento de prioridad mientras lo agrega. Elimine su devolución de llamada «the_content» en este punto. Entonces puede estar seguro de que no tendrá el meta contenido independientemente del extracto que se utilice.

Sin embargo, si agrega su meta en este punto, aparecerá frente a cualquier extracto generado automáticamente. Necesitará otro Hook para agregar «the_excerpt» con una prioridad superior a 10 para asegurarse de que se agregue meta adicional al final del extracto generado automáticamente. (El extracto generado automáticamente se realiza con su propio aro en «the_excerpt») En este Hook posterior puede restaurar su llamada «the_content», ya que el código del extracto generado automáticamente ya se está ejecutando y no habrá recuperaciones adicionales de «The_content» agregado para no ser utilizado en este ciclo de salida.

Lanzador de hilos

(@ guideo07111975)

hace 3 años

Hola @instantpaydayloans y @bcworkz

¡Gracias por su respuesta! Ahora he creado un extracto personalizado, sin usar the_content() filtrar:


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' );

Esto funciona bien 🙂 ¡Resuelto!

@bcworkz: ¡¿Todavía sigues en el foro, después de todo este tiempo ?! ¿Y todavía no hay un sitio web personal que pueda consultar?

Guido

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *