Ordenar publicaciones por ID en el orden dado

4

En el back-office de mi tema, los usuarios pueden elegir qué publicaciones mostrar en la página principal, y también pueden elegir en el orden en que deben aparecer las publicaciones seleccionadas .

Lo he intentado así:

$aPostsIDs = array(1,3,2); // Note the 3 should appear before the 2
query_posts(array('post_type' => 'page', 
                  'post__in' => $aPostsIDs,
                  'order_by' => 'FIELD(ID, '.implode(',',$aPostsIDs).')'));

Pero como se esperaba, no funciona. La forma correcta de hacerlo de acuerdo con el códice es:

add_filter('posts_orderby', 'edit_posts_orderby');
function edit_posts_orderby($orderby_statement) {
    global $aPostsIDs;
    $orderby_statement = 'FIELD(ID, '.implode(',',$aPostsIDs).')';
    return $orderby_statement;
}

¡Pero eso todavía no funciona! Los mensajes se ordenan por ID (1, 2, 3) en lugar de la orden dada (1, 3, 2).

¿Dónde debería mirar? Gracias

    
pregunta Rovb 15.11.2012 - 00:25

1 respuesta

4

Comenzando en WordPress 3.5, el parámetro orderby permitirá que el valor post__in se ordene según el orden del parámetro post__in , como en su ejemplo.

Puede que no sea ideal esperar o requerir más de 3.5, pero es casi seguro que esta es la mejor y la más sencilla forma de hacer lo que estás buscando hacer.

Aquí está el boleto de trac relevante si desea obtener los detalles.

    
respondido por el mrwweb 15.11.2012 - 02:34

Lea otras preguntas en las etiquetas