web-dev-qa-db-ja.com

与えられた文字で始まるすべての投稿を表示しますか?

私はWordpressベースの辞書を作ろうとしています、基本的にそれは26ページ(各手紙のための1つ)を持つでしょう:

A B C ... X Y Z

そしてすべてのページは与えられた文字で始まるすべての投稿を表示するので、 "A"ページを開いた後には以下のように表示されるはずです。

びっくりする

そろばん

アワビ

(...)紺碧

最初はカスタム投稿タイプについて考えていましたが、26種類のカスタム投稿タイプを作成して管理するのはやり過ぎです。

そのような投稿をソートする最も効率的な方法は何でしょうか。データベースクエリ、PHPでループを分割する?私は何千もの投稿を目指しています(はい、それはWordpressでなければなりません:)。

11
Wordpressor

投稿タイプを使用せず、分類用語を使用してください。

保存時に、投稿タイトルの最初の文字を使用して、A-Z分類法でオブジェクト用語を設定します。一貫性のために必ず大文字または小文字を強制してください。必ずアルファベットの各文字ごとに用語を作成し、数字やその他の英数字以外の記号についても用語を作成してください。

これは各記事のタイトルの最初の文字を検索するよりも速いはずです。タグクラウドやterm listerウィジェットのようにもっと多くのことができる分類法をあなたに与えます!データベースに手動で数えることを強いることなく、どの文字が投稿に関連付けられているか、そしてその文字数を決定するはるかに速い方法でもあります。

8
Tom J Nowell

推奨される分類法の用語法を使いたくない場合は、次の操作を行います。

<ul class="posts">
         <?php 
         global $wpdb; 
         $request = "a" // could be any letter you want
         $results = $wpdb->get_results(
                "
                SELECT * FROM $wpdb->posts
                WHERE post_title LIKE '$request%'
                AND post_type = 'post'
                AND post_status = 'publish'; 
                "
         ); 
         if ( $results ) 
         {
            foreach ( $results as $post ) 
            {
                setup_postdata ( $post ); 
                ?> 
                <li>
                    ... loop stuff here (the_title, the_permalink) ... 
                </li>
                <?php 
            }
         } 
         else 
         {
            ?> 
            <div class="alert">No clubs found for that letter. Please try again, or use the search at the top.</div>
            <?php
         }
         ?>
    </ul>
4
21zna9

ここでこの記事をチェックしてください: タイトルによるquery_post?

または、 PODS 2フレームワーク を使用して保存前ヘルパーを作成し、投稿タイトルの最初の文字を何らかのフィールドに保存して単純なWHERE条件を使用することもできます。

または、すべての文字を含むドロップダウン(別のポッド/コンテンツタイプ)を作成して、既存の投稿コンテンツタイプとの関係を作成します(ポッド2では可能です)。そのため、辞書の用語を保存する前に、ドロップダウンボックスからこの用語に割り当てたい文字を選択します。

ポッド2では、既存の投稿コンテンツタイプに追加のフィールドを追加できます。 Drupalの世界ではCCK + Viewsのようなものであるこのプラグイン/フレームワークは本当に素晴らしいです。

ポッド2は非常に便利なプラグインです。

1
Derfder