it-swarm.com.de

Fragen Sie Beiträge aus dem aktuellen Jahr ab

Ich verstehe nicht ganz, warum das nicht funktioniert. Ich versuche Folgendes zu verwenden, um nur Posts aus dem aktuellen Jahr auf der Startseite anzuzeigen:

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

Es werden jedoch weiterhin Posts aus dem Jahr 2012 angezeigt (diese wurden nicht im Jahr 2012 erstellt, aber ich habe das Veröffentlichungsdatum auf einen der Posts festgelegt, die im Februar letzten Jahres angezeigt werden).

Laut Dokumentation sollte ich das so machen. Kann jemand Licht ins Dunkel bringen?

Vielen Dank

2
Phill

Sie müssen nur das aktuelle Datum abrufen und es in data_query in wp_query hinzufügen.

<?php 

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

?>

und dann benutze loop:

<?php 

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

the_title();
the_content();

endwhile; endif;

?>
5
Behzad G.

Verwenden Sie query_posts nicht, um Ihre Abfragen zu ändern. Es ist eine Verschwendung von Ressourcen und führt zu unvorhersehbaren Ergebnissen, da die ursprüngliche Abfrage überschrieben wird, bevor die Vorlage geladen wird.

Verwenden Sie stattdessen pre_get_posts im functions.php Ihres Themas, um die Abfrage bevor zu ändern, die an die Datenbank gesendet wird, und bevor die Vorlage geladen wird.

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' );
1
Milo