2013-12-01 3 views
0

Я создал новый WP_Query для настраиваемого типа сообщения, и я пытаюсь динамически изменять смещение. Мой запрос моделируется после Making Custom Queries using Offset and Pagination, но я изменил его, поэтому он не использует перехватчики, так как я не меняю основной запрос. В любом случае, сообщения отображаются в правильном порядке, а когда я echo var_dump ($new_query->get ('offset'));, устанавливается правильное смещение; однако при загрузке страницы нет смещения. Может ли кто-нибудь помочь мне выяснить, почему смещение не применяется?Смещение WP_Query не работает

function new_query_function ($next_topic) { 
    $args = array(
     'post_type' => 'custom_post_type', 
     'meta_key' => 'topic', 
     'orderby' => 'meta_value_num', 
     'order' => 'DESC', 
    ); 
    $new_query = new WP_Query ($args); 

    $offset = ($new_query->found_posts) - $next_topic; 
    $ppp = (int) get_option ('posts_per_page'); 

    if ($new_query->is_paged) { 
     $page_offset = $offset + (($new_query->query_vars['paged'] - 1) * $ppp); 
     $new_query->set ('offset', $page_offset); 
    } else { 
     $new_query->set ('offset', $offset); 
    } 

    $new_query->found_posts = $next_topic; 
    return $new_query; 
} 

Edit: Это также может иметь отношение, как я реализации этой функции, так вот она:

$new_query = new_query_function($next_topic); 

while ($new_query->have_posts()) { 
    $new_query->the_post(); 
    the_title(); 
    the_content(); 
    //etc. 
} 
wp_reset_query(); 

ответ

0

Найдено ответ. Для любого, кто любопытно:

function vici_apad_query($next_topic) { 
    $args = array(
      'post_type' => 'vici_apad', 
      'meta_query' => array(
        array(
          'key' => 'topic', 
          'value' => $next_topic, 
          'compare' => '<=', 
        ) 
      ), 
      'orderby' => 'meta_value_num', 
      'order' => 'DESC', 
     ); 
    $new_query = new WP_Query($args); 

    return $new_query; 

} 

Реализация такой же, за исключением wp_reset_query() заменяется wp_reset_postdata(), так как нет необходимости сбросить весь запрос.

Я на самом деле сделал мой код более простым, чем самый сложный. Какой сюрприз.

Смежные вопросы