¿Cómo puedo mostrar posts fijados primero en wp_query?
He estado buscando por mucho tiempo pero no pude encontrar una solución. No soy programador. Por favor ayúdenme. Aquí está mi código 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; ?>

No está del todo claro lo que intentas hacer, pero las entradas fijas (sticky posts) deberían aparecer en la parte superior (es decir, ser las primeras entradas mostradas) a menos que hayas hecho algo para evitarlo. Ese es el comportamiento por defecto. Acabo de probarlo con tu consulta, cambiando solo el ID de categoría por uno que existe en mi servidor.
Para evitar este reordenamiento de entradas fijas (es decir, causar el comportamiento opuesto), puedes pasar un parámetro a WP_Query
como:
$my_query = new WP_Query('category_name=animales&showposts=10&ignore_sticky_posts=true');
O establecer el valor antes de que se ejecute la consulta con:
$my_query->set('ignore_sticky_posts',true); // $my_query podría ser cualquier variable WP_Query instanciada.
Quizás deberías buscar en tu tema y plugins la cadena ignore_sticky_posts
para ver si algo está interfiriendo con la consulta.
También podrías intentar forzar el reordenamiento de entradas fijas con:
function forzar_sticky_wpse_98187($qry) {
$qry->set('ignore_sticky_posts',false);
}
add_action('pre_get_posts','forzar_sticky_wpse_98187',1000);
Esto añade un filtro con una prioridad arbitrariamente alta para que se ejecute como la última acción en ese hook. No sé si funciona. No ha sido probado. Además (si funciona) cambiaría todas las consultas, lo cual probablemente sea demasiado agresivo. Deberías añadir condiciones adicionales para restringir cuándo se ejecuta.

// Obtener el ID de la categoría 'animals'
$category = get_cat_ID('animals');
// La Consulta
$args = array(
'post__in' => get_option('sticky_posts'), // Obtener posts sticky
'ignore_sticky_posts' => 1, // Ignorar el comportamiento sticky normal
'order' => 'ASC', // Orden ascendente
'cat' => $category // Filtrar por categoría
);
query_posts($args);
// El 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;
// Restablecer la consulta
wp_reset_query();

intento este código y funciona pero no muy bien. cuando hago un post 'sticky' este código solo muestra los posts 'sticky'. así que quiero mostrar 10 posts de la categoría 'animal' pero que los posts sticky aparezcan primero
