negli argomenti passati negli inputs. Usando get_posts() , puede seleccionar una secuencia de mensaje exacto mediante el parámetro post__in en los argumentos que se pasan en las entradas. . La orden, sin embargo, no es consistente con la secuencia mostrada como WordPress realiza comprobaciones sobre la cláusula ORDER BY de la selección, a pesar de la versión 2.8 está disponible el valor none . Como resultado, un código como el siguiente no devuelve el orden correcto:
1 2 3 4 5 6 7 8 9 | / * Sólo estos envíos en esta secuencia * / array ( 45 , 89 , 210 , 3 ) ; $ Ids = matriz (45, 89, 210, 3); array ( $ Args = array ( 'publish' , 'Post_status' => 'publicar', 'none' , 'Orderby' => 'none', 1 , 'Numberposts' => - 1, $ids 'Post__in' => $ ids ); get_posts ( $args ) ; $ Resultados = get_posts ($ args); |
Esto sucede porque WordPress utiliza un IN en este caso, a saber:
1 | WHERE ID IN ( 45 , 89 , 210 , 3 ) SELECT ... WHERE id IN (45, 89, 210, 3) |
En SQL para ordenar los elementos ", así como adecuadas 'usted tiene que utilizar un determinado ORDER BY :
1 | WHERE ID IN ( 45 , 89 , 210 , 3 ) ORDER BY FIND_IN_SET ( ID , '45, 89, 210, 3' ) SELECT ... WHERE ID IN (45, 89, 210, 3) ORDER BY FIND_IN_SET (ID, '45, 89, 210, 3 ') |
della get_posts() WordPress lo filtra immediatamente, sostituendolo con la data. Huelga decir que si se intenta pasar el FIND_IN SET en el parámetro orderby los get_posts() filtros de WordPress de inmediato, reemplazándolo con la fecha. : La única manera es activar el filtro de posts_orderby , nos obliga el uso de FIND_IN SET :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | / * Sólo estos envíos en esta secuencia * / ; global $ ids; array ( 45 , 89 , 210 , 3 ) ; $ Ids = matriz (45, 89, 210, 3); array ( $ Args = array ( 'publish' , 'Post_status' => 'publicar', 'none' , 'Orderby' => 'none', 1 , 'Numberposts' => - 1, false , 'Suppress_filters' => false, $ids 'Post__in' => $ ids ); / * El uso de una función anidada como ejemplo * / $orderby ) { función posts_orderby ($ orderby) { , $wpdb ; global $ ids, $ WPDB; join ( ',' , $ids ) ; $ Secuencia = unirse a (',', $ ids); 'FIND_IN_SET(' . $wpdb -> posts . '.ID, \'' . $sequence . '\')' ; $ Orderby = 'FIND_IN_SET (' $ WPDB -> mensajes .. 'ID, \'' $ Secuencia..' \ ').'; ; return $ orderby; } / * Añadir el filtro * / , 'posts_orderby' ) ; add_filter ('posts_orderby', 'posts_orderby'); get_posts ( $args ) ; $ Resultados = get_posts ($ args); / * ¿Quitó * / , 'posts_orderby' ) ; remove_filter ('posts_orderby', 'posts_orderby'); |
Eso es todo!










No hay comentarios para este post
Deja un comentario