Usando categorías y "pegajosidad" juntos

2

Tengo una consulta personalizada en mi página de inicio que muestra todas las publicaciones en una categoría determinada. Necesito esta consulta para respetar las publicaciones adhesivas, pero de mi investigación parece que las consultas de categoría ignoran la adherencia. Mi pregunta tiene dos (y medio) pliegue:

  1. ¿Puede alguien decirme dónde / cómo en la base de datos se aplica la adherencia a una publicación? No lo veo en wp_postmeta o wp_posts . Este es el más importante y probablemente será suficiente para obtener la respuesta aceptada de ganar .
  2. ¿Existe alguna forma elegante y simple de capturar publicaciones pegajosas solo de una determinada categoría?
  3. Si no, entonces ¿qué tal una forma fea de hacerlo?

Solo por el detalle, aquí está mi consulta, aunque creo que no hará una diferencia en la respuesta.

$getHighlights = array(
    'posts_per_page' => 7,
    'post_type' => array('post','Event'),
    'category_name' => 'Highlights', 
);

Lo siento por el título largo, pero quería dejar claro lo que estaba pidiendo.

    
pregunta JakeParis 07.01.2011 - 00:15

2 respuestas

8

Simplemente agregue 'post__in' => get_option('sticky_posts') a su consulta, para limitar su consulta solo a publicaciones pegajosas. Entonces,

$getHighlights = array(
    'numberposts' => 7,
    'post_type' => array('post','Event'),
    'post__in' => get_option('sticky_posts'),
    'category_name' => 'Highlights'
);

debería funcionar para usted.

Editar: esta es la forma en que puedes combinar dos matrices para obtener las publicaciones adhesivas en la parte superior de tu consulta:

$getHighlights_sticky = get_posts( array(
        'numberposts' => 7,
        'post_type' => array('post','Event'),
        'post__in' => get_option('sticky_posts'),//it should be post__in but not posts__in
        'category_name' => 'Highlights'
    ));
$getHighlights_other = get_posts( array(
        'numberposts' => 7 - count( $getHighlights_sticky ),
        'post_type' => array('post','Event'),
        'post__not_in' => get_option('sticky_posts'),//it should be post__not_in but not posts__not_in
        'category_name' => 'Highlights'
    ));
foreach ( array_merge( $getHighlights_sticky, $getHighlights_other ) as $post ) {
    setup_postdata( $post );

    // your display loop

}

Esto mostrará 7 publicaciones, con las notas adhesivas en la parte superior (por supuesto, esto asumiendo que no tienes más de 7 notas adhesivas, de lo contrario, todo estará desordenado ...) (editado en use numberposts según el comentario de OP a continuación ...)

    
respondido por el goldenapples 07.01.2011 - 02:10
2

Sticky no se guarda por publicación, existe la opción sticky_posts que contiene una matriz de los mismos. Así que puedes obtener eso con $sticky_posts = get_option('sticky_posts');

Consulte Sticky Post Parameters en Codex para obtener información sobre cómo consultar adhesivos.

No estoy del todo seguro de cuál sería el mejor enfoque para hacer que su consulta respete los comentarios. De un vistazo rápido al código, es probable que se anule is_home condicional y eso empiece a pegar. Podría ser capaz de enganchar en alguna parte y falsificar ese condicional, pero esto podría romper algo más en el procesamiento.

    
respondido por el Rarst 07.01.2011 - 00:35

Lea otras preguntas en las etiquetas