Cum pot afișa postările sticky primele în wp_query?
Am căutat mult timp, dar nu am găsit o soluție. Nu sunt programator. Vă rog să mă ajutați. Iată codul meu 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; ?>

Nu este complet clar ce încerci să faci, dar postările lipicioase ar trebui să fie deja în partea de sus – adică primele postări afișate – decât dacă ai făcut un efort pentru a preveni acest lucru. Acesta este comportamentul implicit. Tocmai am testat acest lucru cu interogarea ta, schimbând doar ID-ul categoriei cu ceva care există pe serverul meu.
Pentru a preveni manipularea postărilor lipicioase – adică pentru a obține comportamentul opus – poți transmite un parametru la WP_Query
astfel:
$my_query = new WP_Query('category_name=animale&showposts=10&ignore_sticky_posts=true');
Sau poți seta valoarea înainte ca interogarea să ruleze cu:
$my_query->set('ignore_sticky_posts',true); // $my_query poate fi orice variabilă WP_Query instanțiată.
Poate ar fi bine să cauți în tema și pluginuri după ignore_sticky_posts
și să vezi dacă ceva interferează cu interogarea.
De asemenea, poți încerca să forțezi manipularea postărilor lipicioase cu:
function force_sticky_wpse_98187($qry) {
$qry->set('ignore_sticky_posts',false);
}
add_action('pre_get_posts','force_sticky_wpse_98187',1000);
Aceasta adaugă un filtru cu o prioritate arbitrar ridicată, astfel încât ar trebui să ruleze ca ultima acțiune pe acel cârlig. Nu știu dacă funcționează. Este complet netestat. De asemenea, dacă funcționează, modifică toate interogările, ceea ce este probabil prea agresiv. Ai vrea să adaugi condiții suplimentare pentru a restricționa când rulează.

$category = get_cat_ID('animale');
// Interogarea
$args = array('post__in' => get_option( 'sticky_posts' ),
'ignore_sticky_posts' => 1, 'order' => 'ASC' , 'cat' => $category);
query_posts( $args );
// Bucla
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;
// Resetare Interogare
wp_reset_query();

am încercat acest cod, funcționează dar nu foarte bine. când fac o postare 'sticky', acest cod afișează doar postările 'sticky'. așa că vreau să afișez 10 postări din categoria 'animal' dar postările sticky să fie în top
