Query per post dell'anno corrente

10 mar 2013, 04:59:55
Visualizzazioni: 14.2K
Voti: 3

Non capisco bene perché questo non funzioni. Sto provando a usare il seguente codice per mostrare solo i post dell'anno corrente nella pagina principale:

<?php query_posts( "&year=$current_year&order=DESC"); ?>

Ma continua a mostrare post del 2012 (in realtà non sono stati creati nel 2012, ma ho impostato la data di pubblicazione di uno dei post che viene visualizzato a febbraio dello scorso anno)

Secondo la documentazione, dovrei farlo così. Qualcuno può chiarirmi la situazione?

Grazie

2
Commenti

Non importa, ho dimenticato di impostare la variabile:

<?php $current_year = date('Y'); ?>

/Facepalm

Phill Phill
10 mar 2013 05:09:41

Ecco informazioni su Quando dovresti usare WP_Query vs query_posts() vs get_posts()? per chiunque passi da questa domanda.

admcfajn admcfajn
10 mag 2019 01:25:55
Tutte le risposte alla domanda 2
0

Devi solo ottenere la data corrente e aggiungerla al data_query in wp_query, Guarda questo:

<?php 

$getdate = getdate();
$args = array(
    'date_query' => array(
        array(
            'year'  => $getdate["year"]
        ),
    ),
);
$query = new WP_Query( $args );

?>

e poi usa il loop:

<?php 

if ( $query->have_posts() ): while ( $query->have_posts() ) : $query->the_post();

the_title();
the_content();

endwhile; endif;

?>
11 mag 2014 00:50:52
0

Non utilizzare query_posts per modificare le tue query. È uno spreco di risorse e produce risultati imprevedibili, poiché sovrascrive la query originale che avviene prima del caricamento del template.

Utilizza invece pre_get_posts nel file functions.php del tuo tema per alterare la query prima che venga inviata al database, e prima che il template venga caricato.

function home_page_current_year( $query ){
    if( $query->is_home() && $query->is_main_query() )
        $query->set( 'year', date('Y') );
}
add_action( 'pre_get_posts', 'home_page_current_year' );
10 mar 2013 05:15:38