2011-12-22 8 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コードを記述する必要があります「」、「」、「」彼らからのphpにpreg_replaceを使用し、それを追加このようなものを使用してWordPressのデータベースの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.. 
} 
ような何かを行うことができます