2010-02-11 4 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; ?> 

이 간단한 워드 프레스 루프를 사용하여 말 'G'로 시작하는 게시물 (실제로 게시물 제목) 만 표시하는 방법은 무엇입니까? 게시물을 사전 순으로 정렬하고 싶지만 모두 일치하는 것은 아니며 일치하는 게시물 만 정렬하고 싶습니다.알파벳 [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, ect'와 관련된 게시물에 대한 메타 쿼리가없는 것은 이상한 일입니다. 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"라는 태그를 적용하십시오. 그렇다면 당신이 쿼리 태그 섹션에서 그냥 선택의 편지를 추가했는지 확인하십시오!

관련 문제