Como posso classificar a página inicial por um meta-valor?

Estou tentando classificar meus posts da página inicial por um meta-valor personalizado. Foi-me dito que eu deveria usar pre_get_posts mas parece não estar implementando-o corretamente.

Isto é o que eu estou fazendo:

 add_filter('pre_get_posts','alter_query'); function alter_query($query){ if( $query->is_home() ){ $query->set( 'meta_key', 'key name' ); $query->set( 'orderby', 'meta_value_num' ); $query->set( 'order', 'DESC' ); } return $query; } 

Quando eu uso a function acima, a consulta da página inicial não está retornando todas as postagens e não as ordenando corretamente; Estou tentando descobrir se eu vou sobre isso da maneira correta.

Solutions Collecting From Web of "Como posso classificar a página inicial por um meta-valor?"

Você provavelmente também precisa:

 $query->set( 'ignore_sticky_posts', true ); 

Isso impedirá que as postagens de arquivo sejam embaralhadas para o topo.

Talvez:

 $query->set( 'posts_per_page', -1 ); 

Se você está recebendo muito poucas postagens. -1 significa “tudo”. Você pode usar isso para mudar para um número diferente do que está definido no backend.

Algumas notas:

  1. $query->set( 'meta_key', 'key name' ); limitará os resultados a postagens com essa meta_key
  2. Se o seu meta_value para o key name da key name não é realmente um número, a ordem não funcionará corretamente. A pontuação e as letras estragarão isso.
  3. is_home pode ser peculiar. Certifique-se de que ele faça o que você precisa para fazer.

Além disso, você precisará explicar “não retornar todas as postagens e não ordená-las corretamente” em melhor detalhe.