Mi página personalizada 'Inicio' está configurada para ordenar mis publicaciones personalizadas a través del campo de fecha personalizada con este código (actualizado para que tenga un nombre personalizado) en functions.php:
// sort order for home page
add_action('wp', 'wwgo_check_page');
function wwgo_check_page () {
if (is_page()) {
add_filter('get_previous_post_sort', 'sort_it');
add_filter('get_next_post_sort', 'sort_it');
add_filter('posts_orderby', 'sort_it' );
add_filter('posts_join', 'join_it' );
add_filter('posts_where', 'where_it' );
function sort_it () {
global $wpdb;
return " $wpdb->postmeta.meta_value ASC ";
}
function join_it( $join ) {
global $wpdb;
$join .= " LEFT JOIN $wpdb->postmeta ON($wpdb->posts.ID = $wpdb->postmeta.post_id) ";
return $join;
}
function where_it( $where ) {
global $wpdb;
$where .= "AND $wpdb->postmeta.meta_key = 'deadline' ";
return $where;
}
}
}
Lo cual es elegante y simple. Ahora. Quiero que esto funcione en todo el sitio. Quiero que las publicaciones en páginas de archivo, categorías, etc. se ordenen primero por el campo de fecha personalizado.
¿Algunas ideas?
He intentado cambiar el ' if
' is_archive()
pero eso no tuvo ningún efecto. Yo <! is_single()>
también lo intenté .
Estoy seguro de que debería ser algo simple. Pero soy nuevo en PHP y, por lo tanto, no tengo idea.
Aquí está el sitio , donde puede ver que la página de inicio está bien ordenada, pero si hace clic en 'poesía' (la única con algunas publicaciones), la ordenación no funciona.
Cualquier sugerencia será recibida con mucha alegría.
Gracias por su amabilidad.
josh_
para evitar nombrar colisiones.Respuestas:
Use el filtro de solicitud
query_vars
o para agregar si no se presenta en la cadena de consultaorderby
orderby
fuente
request
sugerencia de filtrois_archive()
y similares tan temprano en el proceso.¿Por qué no usas query_posts ()?
También puede alterar la consulta usando pre_get_posts hook y hacer su clasificación condicional allí con is_archive (), is_page (), etc.
fuente
Estoy mirando tu otra pregunta también.
Si desea ordenar por el metavalor de la fecha, naturalmente deben estar en el mismo formato. Supongo que es el formato de fecha ('m-y') de PHP que especificó en su código.
Si ese es el caso, ¿puede encontrar que si cambia su
meta_value
código parameta_value_num
obtener un mejor resultado?No estoy seguro de que esto funcione, pero podría valer la pena intentarlo.
fuente