2013-06-07 15 views

Odpowiedz

2

powinien działać dobrze. get_posts() używa WP_Query() za sceną, aby wykonać rzeczywiste żądanie. W Twoim przypadku zmodyfikowany przykład powinien wyglądać mniej więcej tak:

// Create a new filtering function that will add our where clause to the query 
function filter_where($where = '') { 
    // posts in the last 30 days 
    $where .= " AND post_date > '" . date('Y-m-d', strtotime('-10 days')) . "'"; 
    return $where; 
} 

add_filter('posts_where', 'filter_where'); 
$query = get_posts(array (
      'numberposts' => 5, 
      'orderby'=>'comment_count', 
      'order'=>'DESC', 
      'post_type' => array ('post') 
     )); 
remove_filter('posts_where', 'filter_where'); 
+0

Nie mogę zrozumieć, jak zintegrować ten rozwiązanie mojego obecnego kodu. Mam zaktualizowane moje pytanie z moim pełnym kodem, czy mógłbyś spojrzeć i pokazać, jak twoje rozwiązanie będzie działało z moim kodem? Jeśli to zadziała, z pewnością przyjmuję tę odpowiedź jako poprawną. –

+1

@HenrikPetterson: moje rozwiązanie pozostanie takie samo z twoim pełnym kodem. Co robisz to 1 - zdefiniuj niestandardowy filtr, który robi to, co chcesz (funkcja "filter_where()" w mojej odpowiedzi, która ogranicza się do ostatnich dziesięciu dni), 2 - dodaj filtr do wszystkich zapytań od teraz używając add_filter, 3 - uruchom zapytanie, get_post() wywoła wp_query(), które zastosuje twój filtr, 4 - usuń filtr za pomocą remove_filter(), więc nie zostanie zastosowany do innych zapytań, które mogą/mogą się pojawić. Jedyna zmiana to zmiana nazwy zapytania $ na $ posts. – Lepidosteus

+0

Wiesz, że zrozumiałem rozwiązanie dokładnie tak, jak opublikowałem ten komentarz. Świetna odpowiedź. Przyjęty. –

Powiązane problemy