it-swarm.com.de

WordPress bekommt Beiträge nach Datum ohne query_posts

Ich möchte die Posts der letzten 30 Tage in einer Seitenleiste abrufen, aber keine query_posts verwenden. Gibt es eine Möglichkeit, dies mit der Funktion zum Abrufen von Posts zu erreichen?

2
Chozen

Ja, fügen Sie einfach einen Filter hinzu, bevor Sie ihn aufrufen, und entfernen Sie ihn anschließend

function filter_where_wpa89154($where = '') {
    //posts in the last 30 days
    $where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
    return $where;
}

add_filter('posts_where', 'filter_where_wpa89154');
$args = array(
    'posts_per_page'  => 5,
    'post_type'       => 'post',
    'post_status'     => 'publish',
    'suppress_filters' => false
); 
$posts = get_posts($args);
remove_filter('posts_where', 'filter_where_wpa89154');

beachte den 'suppress_filters' => false was das mit get_posts bewirkt

5
Bainternet

Ab 3.7 können Sie date_query http://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters verwenden.

So würde es aussehen:

$args = array(
    'posts_per_page'  => 5,
    'post_type'       => 'post',
    'post_status'     => 'publish',
    'date_query' => array(
        'after' => date('Y-m-d', strtotime('-30 days')) 
    ),
    'suppress_filters' => false
); 
$posts = get_posts($args);
6
Kode