2011-12-22 1 views
5

는 그래서 같은 제목의 알파벳순으로 내 게시물을 분류하고 있습니다 :종류의 워드 프레스 포스트는 "은", "A"와 같은 기사를 무시 "는"

<?php 
     { 
     $posts = get_posts($query_string . 
     '&orderby=title&order=asc&posts_per_page=-1'); 
     } 
     get_template_part('loop', 'category'); 
    ?> 

내가 기사를 제외하려면 정렬에서 "the", "a"및 "an"과 같은.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

감사합니다.

답변

1

나는 그것을 할 수있는 간단한 방법을 알고하지 않습니다하지만 당신은이 작업을 수행 할 수

이를 달성하기 위해 당신이 게시물에 custom meta field를 추가해야합니다. 이름을 mytitle로 지정하십시오 (말하십시오).

새 게시물에 간단히 추가하면 게시물 추가 페이지의 mytitle 사용자 정의 필드에서 수정 된 제목 (제목에서 a, an,을 제거함)을 추가해야합니다. 오래된 게시물를 들어

는 당신이 게시물 삭제의 제목을 검색하는 PHP 코드를 작성해야 조금 까다 롭습니다 'A', '에', '을'PHP는 preg_replace이다를 사용에 추가 그들로부터 이 같은 것을 사용하여 워드 프레스 데이터베이스의 postmeta 테이블 :

<?php //inside loop 
$query=INSERT INTO xyz_postmeta (post_id, meta_key, meta_value) VALUES ($postid, 'mytitle' $title); 
$wpdb->query('$query'); ?> 

$의 postid 루프와 $ 제목의 내부 포스트 ID입니다 수정 된 제목입니다.

이제 모든 이전 게시물을 사용자 정의 mytitle 필드로 업데이트했습니다.

이제 표시하려면 사용자 정의 루프 (테마에 포함 된 루프가 아님)를 사용해야합니다.

다음은 기본 맞춤 루프를 사용하여 mytitle 순으로 정렬 된 게시물을 표시하는 방법입니다.

$querystr = " 
    SELECT wposts.* 
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta 
    WHERE wposts.ID = wpostmeta.post_id 
    AND wpostmeta.meta_key = 'mytitle' 
    AND wposts.post_type = 'post' 
    AND wposts.post_status = 'publish' 
    ORDER BY wpostmeta.meta_value ASC 
    "; 

이제 원하는 방식으로 쿼리를 실행할 수 있습니다. Wordpres는 이렇게 다양한 방법을 제공합니다. Here's a link

는 예를 들어, 당신은이

$pageposts = $wpdb->get_results($querystr, OBJECT); 
foreach ($pageposts as $pagepost) 
{ 
    echo $pagepost->post_title; 
    //do other stuff to display content, meta etc.. 
} 
처럼 뭔가를 할 수