Cómo usar pre_get_posts para establecer publicaciones por página

2 abr 2012, 18:12:28
Vistas: 16.4K
Votos: 5

Estoy intentando usar pre_get_posts para establecer el número de publicaciones por página para un término específico dentro de una taxonomía. Una cosa que me confunde es cómo establecer el término al que aplicar el pre_get_posts.

Aquí está mi código:

function filtrar_press_tax( $query ){
if( $query->query_vars['tax_query']['taxonomy'] == 'press' && $query->query_vars['tax_query']['terms'][0] == 'press' ):
    $query->query_vars['posts_per_page'] = 5;
    return;
endif;
}//fin de filtrar_press_tax

No entiendo completamente cómo acceder a la taxonomía y al término en el $query. Sí, la taxonomía y el término tienen el mismo nombre. ¿Es esto una mala idea? No tengo una consulta personalizada configurada en la plantilla taxonomy-press-press.php para el 'tax_query', ¿es este el problema?

¡Agradecería cualquier ayuda! Gracias

0
Todas las respuestas a la pregunta 1
4
16

Ya casi lo tienes, compañero. Prueba esto:

<?php
    add_action('pre_get_posts', 'filter_press_tax');

    function filter_press_tax( $query ){
        if( $query->is_tax('press') && $query->has_term('press')):
            $query->set('posts_per_page', 5);
            return;
        endif;
    }
?>

Puedes usar cualquier etiqueta condicional o cualquier argumento que se pueda pasar a WP_Query para probar tu condición o establecer un nuevo valor mediante pre_get_posts. También prueba $query->get('taxonomy') / $query->get('term'). Y revisa esto para los métodos set y get de $query.

2 abr 2012 18:30:10
Comentarios

¡Gracias por esto! El is_tax funciona genial pero aún no puedo establecer el término. has_term arroja un error y usar get('term') no aplica los posts por página. Intenté usar get('term') == slug, id y valores de nombre pero sin éxito. Luego probé $query->query_vars['term'] también sin suerte. Debo estar pasando por alto algo todavía. Revisé el objeto stdClass $query aquí: http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts y no veo un valor 'term' o has_term en la lista. Funciona siempre y cuando no intente establecer el término. Extraño.

dkmojo dkmojo
3 abr 2012 01:15:43

¡De nada! ¿Quieres establecer el término? Déjame echarle un vistazo y ver cómo se puede hacer.

Rutwick Gangurde Rutwick Gangurde
3 abr 2012 06:53:39

¡Gracias! Funciona bien por el momento y mi otro término en la taxonomía press, llamado online reviews, tampoco se ve terriblemente afectado. Estaré atento a cualquier cosa que puedas encontrar que pueda ser útil. :)

dkmojo dkmojo
3 abr 2012 18:21:42

¡Bienvenido de nuevo! En realidad, no tengo una configuración de CPT/taxonomía a mano en este momento, por lo que no pude probarlo. Pero definitivamente lo probaré tan pronto como configure las cosas y actualizaré aquí. :D

Rutwick Gangurde Rutwick Gangurde
3 abr 2012 19:32:56