2013-11-06 21 views
3

Ниже приведен мой запрос Wordpress, в котором я хочу показывать только липкие сообщения, но запрос не показывает никаких сообщений. Также я установил два сообщения как липкие, чтобы часть была проверена !!!. Пожалуйста, дайте мне знать, как изменить этот запрос, поэтому он будет показывать только сообщения, которые являются липкимиWordpress запрос, чтобы показывать только липкие сообщения

<?php 
    $wp_query = null; 
    $wp_query = new WP_Query(array(
'posts_per_page' => 2, 
//'paged' => get_query_var('paged'), 
'post_type' => 'post', 
'post__in' => 'sticky_posts', 
//'post__not_in' => array($lastpost), 
'post_status' => 'publish', 
'caller_get_posts'=> 0)); 

    while ($wp_query->have_posts()) : $wp_query->the_post(); $lastpost[] = get_the_ID(); 
?> 

ответ

7

запроса, который будет показывать только липкие сообщения:

// get sticky posts from DB 
$sticky = get_option('sticky_posts'); 
// check if there are any 
if (!empty($sticky)) { 
    // optional: sort the newest IDs first 
    rsort($sticky); 
    // override the query 
    $args = array(
     'post__in' => $sticky 
    ); 
    query_posts($args); 
    // the loop 
    while (have_posts()) { 
     the_post(); 
     // your code 
    } 
} 
+0

Эй я столкнулся последний вопросом, что, когда нет ни одного липких сообщений, то я получаю предупреждение: -/любезно дайте мне знать, как это исправить часть тоже? – user2304394

+0

Вы не должны получать предупреждение, если используете '! Empty', как я показал. Но вы можете попытаться расширить это 'if', чтобы проверить также, если' is_array ($ sticky) ' – sebapalus

0

The query_posts() функция создает новый WP_Query() не до того, как будет настроен текущий запрос, что означает, что это не самый эффективный метод и будет perform extra SQL requests.

Используйте крюк «pre_get_posts», чтобы быть безопасными, как

function sticky_home($query) { 

    $sticky = get_option('sticky_posts'); 

    if (! empty($sticky)) { 
     if ($query->is_home() && $query->is_main_query()) { 
      $query->set('post__in', $sticky); 
     } 
    } 

} add_action('pre_get_posts', 'sticky_home'); 
Смежные вопросы