Solicitar publicações (em todo o site) por data de metadados

8

Minha página personalizada "Início" está configurada para classificar minhas postagens personalizadas por meio do campo de data personalizada com esse 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;
    }
}



}

Qual é dandy e simples. Agora. Eu 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 personalizada.

Alguma idéia?

Eu tentei alterar o ' if ' para is_archive() , mas isso não teve efeito. Eu tentei <! is_single()> também.

Tenho certeza que deve ser algo simples. Mas eu sou novo para php e, assim, sem noção.

Aqui está o site , onde você pode ver que a página inicial está bem organizada, mas se você clicar em 'poesia' apenas um com alguns posts), a classificação não funciona.

Todas as sugestões serão recebidas com muita alegria.

Obrigado gentilmente.

    
por josh 21.06.2011 / 02:54

3 respostas

2

Use o filtro query_vars ou solicitação para adicionar orderby se orderby não for apresentado em a string de consulta

    
por Maxim Krizhanovsky 09.10.2011 / 15:09
0

Por que você não usa query_posts ()?

<?php
query_posts('meta_key=key_name&orderby=key_name&sort=ASC');
if ( have_posts() ) : while ( have_posts() ) : the_post();

endwhile; else:

endif;

wp_reset_query();

Você também pode alterar a consulta usando o pre_get_posts hook e fazer sua ordenação condicional com is_archive (), is_page () etc ...

    
por Brian Fegter 09.09.2011 / 07:09
0

Estou a analisar as suas outras pergunta também.

Se você deseja classificar pelo meta-valor de data, eles devem estar naturalmente no mesmo formato - estou supondo que seja o formato de data do PHP ('m-y') como você especificou em seu código?

Se for esse o caso, você poderá descobrir que, se alterar seu meta_value nesse código para meta_value_num , obterá um resultado melhor?

Não tenho certeza se isso funcionará, mas pode valer a pena tentar.

    
por djb 02.12.2011 / 13:27