Come visualizzare i post sticky in prima posizione in wp_query?

3 mag 2013, 12:37:19
Visualizzazioni: 14.4K
Voti: -4

Sto cercando da tempo ma non sono riuscito a trovare una soluzione. Non sono un programmatore. Per favore aiutami. Ecco il mio codice wp_query;

$my_query = new WP_Query('category_name=animals&showposts=10');
while ($my_query->have_posts()) : 
    $my_query->the_post();
    $do_not_duplicate = $post->ID; ?> 
    <li><a href="<?php the_permalink()?>"><?php the_title(); ?></a></li><?php 
endwhile; ?> 
0
Tutte le risposte alla domanda 2
0

Non è del tutto chiaro cosa stai cercando di fare, ma i post sticky dovrebbero già essere in cima – cioè i primi post visualizzati – a meno che tu non abbia fatto qualcosa per impedirlo. Questo è il comportamento predefinito. Ho appena testato questo con la tua query, cambiando solo l'ID della categoria con uno esistente sul mio server.

Per evitare che i post sticky vengano riordinati – cioè per ottenere il comportamento opposto – puoi passare un parametro a WP_Query in questo modo:

$my_query = new WP_Query('category_name=animali&showposts=10&ignore_sticky_posts=true');

Oppure impostare il valore prima che la query venga eseguita con:

$my_query->set('ignore_sticky_posts',true); // $my_query può essere qualsiasi variabile istanziata di WP_Query.

Potresti cercare nel tuo tema e nei plugin la stringa ignore_sticky_posts per vedere se qualcosa sta interferendo con la query.

Potresti anche provare a forzare il riordino dei post sticky con:

function force_sticky_wpse_98187($qry) {
  $qry->set('ignore_sticky_posts',false);
}
add_action('pre_get_posts','force_sticky_wpse_98187',1000);

Questo aggiunge un filtro con una priorità arbitrariamente alta in modo che dovrebbe essere eseguito come ultima azione su quell'hook. Non so se funziona. È completamente non testato. Questo cambierebbe (se funziona) tutte le query, il che è probabilmente troppo aggressivo. Dovresti aggiungere ulteriori condizioni per limitare quando viene eseguito.

3 mag 2013 16:47:59
4
$category = get_cat_ID('animali');

// La Query

$args = array('post__in' => get_option( 'sticky_posts' ),
'ignore_sticky_posts' => 1, 'order' => 'ASC' , 'cat' => $category);
query_posts( $args );

// Il Loop
while ( have_posts() ) : the_post();
?>
    <div id="sticky_title"><h1><?php the_title();?></h1></div>
    <div id="sticky_excerpt"><p><?php the_excerpt(); ?></p></div>
<?php

endwhile;

// Reset Query

wp_reset_query();
3 mag 2013 13:02:32
Commenti

grazie per la risposta ma non ho capito.

İlkay Çay İlkay Çay
3 mag 2013 13:10:46

cosa ottieni

Balas Balas
3 mag 2013 13:32:28

ho provato questo codice e funziona ma non molto bene. quando rendo un post 'sticky' questo codice mostra solo i post 'sticky'. quindi vorrei mostrare 10 post dalla categoria 'animal' ma con i post sticky in cima

İlkay Çay İlkay Çay
3 mag 2013 14:43:19

@ENTRAMBI Utilizzate una formattazione corretta (editor WYSIWYG, link "aiuto" per ulteriori informazioni) con caratteri maiuscoli e minuscoli. Questo non è una chat e dovrebbe essere un riferimento per i lettori futuri. Grazie.

kaiser kaiser
3 mag 2013 16:24:07