Minha página inicial personalizada é definida para classificar minhas postagens personalizadas por meio do campo de data personalizado com este código (atualizado para ser personalizado) em 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;
}
}
}
O que é elegante e simples. Agora. Quero que isso funcione em todo o site. Quero que as postagens em páginas de arquivo, categorias etc. sejam classificadas primeiro pelo campo de data personalizado.
Alguma ideia?
Eu tentei mudar o ' if
' para is_archive()
mas isso não teve efeito. Eu <! is_single()>
também tentei .
Tenho certeza que deve ser algo simples. Mas eu sou novo em php e, portanto, sem noção.
Aqui está o site , onde você pode ver a página inicial bem ordenada, mas se você clicar em 'poesia' (a única com algumas postagens), a classificação não funcionará.
Todas as sugestões serão recebidas com muita alegria.
Obrigado por favor.
josh_
para evitar nomear colisões.Respostas:
Use o filtro
query_vars
ou request para adicionarorderby
seorderby
não for apresentado na string de consultafonte
request
sugestão filtrois_archive()
e similares tão cedo no processo.Por que você não usa query_posts ()?
Você também pode alterar a consulta usando o gancho pre_get_posts também e fazer sua classificação condicional lá com is_archive (), is_page () etc ...
fonte
Também estou olhando sua outra pergunta .
Se você deseja classificar pela meta-valor da data, eles devem estar naturalmente no mesmo formato - suponho que seja o formato de data do PHP ('m-y') conforme especificado no seu código?
Se for esse o caso, você poderá descobrir que, se alterar seu
meta_value
código parameta_value_num
obter um resultado melhor?Não tenho certeza se isso funcionará, mas pode valer a pena tentar.
fonte