2010-02-11 2 views
2
<?php $temp_query = $wp_query; ?> 
<?php query_posts('tag=sometag,anothertag&posts_per_page=10'); ?> 

<?php while (have_posts()) : the_post(); ?> 
    // print post here 
<?php endwhile; ?> 

<?php $wp_query = $temp_query; ?> 

Использование этого простого цикла wordpress, как я могу показать ТОЛЬКО сообщения (собственно заголовки сообщений), начиная с буквы «G». Я хочу сортировать сообщения по алфавиту, но только те, которые соответствуют, не все.Fetch сообщения, начинающиеся с алфавита [x]

Спасибо!

ответ

5

Я бы установил действие для запроса. В вашей темы functions.php файла:

add_action('posts_where', 'startswithaction'); 
function startswithaction($sql){ 
    global $wpdb; 
    $startswith = get_query_var('startswith'); 

    if($startswith){ 
     $sql .= $wpdb->prepare(" AND $wpdb->posts.post_title LIKE %s ", $startswith.'%'); 
    } 

    return $sql; 
} 

Тогда вы можете запросить сообщения следующим образом:

query_posts('startswith=G&posts_per_page=10'); 
+3

Вы только что научил меня что-то очень ценное, спасибо. Я не знал до 5 секунд назад, что действие «posts_where» существует. : D – Sandwich

+0

СПАСИБО ТОН! Это работало как шарм! :) – 3zzy

+0

Это очень приятное решение, но мне лично не нравится использовать необработанный SQL в любом месте. Странно, что базовые параметры сообщений запроса не имеют чего-то вроде мета-запросов в сообщениях относительно «LIKE», «NOT LIKE» и т. Д. http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters – Foxinni

3

Проверьте заголовок поста внутри цикла:

while (have_posts()) : the_post(); 
    // jump to the next post if this one doesn't start with the letter you want 
    if($post->post_title[0] != $letter) continue 

    // do what you want with the post 
endwhile; 
0

Сумасшедшая думал здесь, но почему бы вам просто добавить письмо в качестве тегов к сообщению. Другими словами, если вы хотите, чтобы ваш пост «Красивые деревья» появился под «B» (обратите внимание, что я сказал B, а не T), просто примените тег под названием «B». Затем в разделе тегов запросов вы просто убедитесь, что вы добавили свое письмо по своему выбору!

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