WordPress obtém posts por data sem query_posts

2

Eu quero receber postagens dos últimos 30 dias em uma barra lateral, mas eu não quero usar query_posts, existe uma maneira de conseguir isso com a função de obter postagens?

    
por Chozen 03.03.2013 / 08:41

2 respostas

5

Sim, adicione um filtro antes de ligar e remova-o depois de fazer

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

observe o 'suppress_filters' => false , que é o que faz isso acontecer com get_posts

    
por Bainternet 03.03.2013 / 11:11
6

A partir de 3.7, você pode usar date_query enlace

Então, seria parecido com:

$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);
    
por Kode 31.07.2014 / 23:46