2017-01-22 7 views
0

Я хотел бы компенсировать мои сообщения на главной странице на 5. У меня есть виджет наверху, который показывает первые 5 уже.WordPress офсетные сообщения на главной странице

Я использую это в своих функциях.php, чтобы получить смещение. и это работает. проблема заключается в том, что виджет больше не печатает сообщения с самого начала. Весь код ниже

add_action('pre_get_posts', 'myprefix_query_offset', 1); 

function myprefix_query_offset(&$query) { 

    //Before anything else, make sure this is the right query... 
    if (!$query->is_home()) { 
     return; 
    } 

    //First, define your desired offset... 
    $offset = 5; 

    //Next, determine how many posts per page you want (we'll use WordPress's settings) 
    $ppp = get_option('posts_per_page'); 

    //Next, detect and handle pagination... 
    if ($query->is_paged) { 

     //Manually determine page query offset (offset + current page (minus one) x posts per page) 
     $page_offset = $offset + (($query->query_vars['paged'] - 1) * $ppp); 

     //Apply adjust page offset 
     $query->set('offset', $page_offset); 
    } else { 

     //This is the first page. Just use the offset... 
     $query->set('offset', $offset); 
    } 
} 

виджета использует это, и когда он делает, он передает обратно первые 5 компенсирующего набора данных. и он использует переменную get_featured_post.

$get_featured_posts = new WP_Query(array(
    'posts_per_page' => 5, 
    'post_type' => 'post', 
    'ignore_sticky_posts' => true 
     ) 
); 

Любая помощь будет оценена по достоинству.
Спасибо.

ответ

0

Я думаю, что проблема в коде заключается в том, что он не применяется к правильному запросу.

add_action('pre_get_posts', 'myprefix_query_offset', 1); 

function myprefix_query_offset(&$query) { 

//Before anything else, make sure this is the right query... 
if (!in_the_loop() || !is_main_query()) { 
    return; 
} 

//First, define your desired offset... 
$offset = 5; 

//Next, determine how many posts per page you want (we'll use WordPress's settings) 
$ppp = get_option('posts_per_page'); 

//Next, detect and handle pagination... 
if ($query->is_paged) { 

    //Manually determine page query offset (offset + current page (minus one) x posts per page) 
    $page_offset = $offset + (($query->query_vars['paged'] - 1) * $ppp); 

    //Apply adjust page offset 
    $query->set('offset', $page_offset); 
} else { 

    //This is the first page. Just use the offset... 
    $query->set('offset', $offset); 
} 
} 

вы можете попробовать код, указанный выше, и дайте мне знать, если эту работу.

С благодарностью

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