¿Cambio en in_category en WP 4.7?

18 dic 2016, 19:48:06
Vistas: 141
Votos: 0

Desde la actualización a la versión 4.7, esta línea de código ya no retorna:

function foo(bar){
    global $post;
    if(in_category("mi-categoria-de-prueba", $post)) return;
    echo "No está en mi-categoria-de-prueba";
}

¿Hubo algún cambio con el filtro in_category?

Nota: "mi-categoria-de-prueba" es una subcategoría de "Sin categoría"

4
Comentarios

No lo creo. Parece que foo() siempre devolverá null, sin importar la verificación de in_category().

birgire birgire
18 dic 2016 20:55:35

Puedo hacer que foo muestre cualquier cosa, excepto que este if debería retornar pero no lo hace. ¿Por qué dices que siempre retorna null?

Scott B Scott B
18 dic 2016 21:58:58

¿Funciona in_category() fuera de la función y dónde lo usas (contexto)? ¿No puedes omitir el segundo argumento $post, si quieres el objeto global $post, porque get_post( null ) intentará usar el objeto post global si existe?

birgire birgire
19 dic 2016 00:41:09

He encontrado el problema. Estoy ejecutando un filtro en list_terms_exclusions para eliminar los hijos de "Sin categoría". ¿Es posible que este filtro no se ejecutara en in_category() antes de la versión 4.7 y posiblemente hasta la versión 3.x?

Scott B Scott B
19 dic 2016 16:18:55
Todas las respuestas a la pregunta 1
1

He encontrado el problema. He estado ejecutando un filtro en list_terms_exclusions específicamente para eliminar todos los hijos de "Sin categoría" para que no aparezcan en el sitio web público.

add_filter('list_terms_exclusions', 'my_list_terms_exclusions',10,2);  

Sin embargo, usar in_category() todavía devolvía coincidencias en esas categorías, que era exactamente lo que quería. Necesitaba ocultar esas categorías de los listados de categorías, pero aún necesitaba saber cuando una publicación específica tenía una o más de esas categorías presentes. Y así pude usar in_category() para ese propósito.

Esta técnica ha funcionado bien durante todo el tiempo que recuerdo hasta la versión 4.7

Sin embargo, a partir de la versión 4.7 (y posiblemente antes), la función in_category() se filtra por list_terms_exclusions. Así que ya no devuelve ninguna de mis categorías bajo Sin categoría.

19 dic 2016 16:25:12
Comentarios

Todavía estoy tratando de determinar qué versión cambió esto para que "in_category()" sea filtrado por list_terms_exclusions

Scott B Scott B
20 dic 2016 16:01:44