0

私のクライアントは、さまざまなセーリング サービスを一覧表示する Web サイトを持っています。これらのサービスには、さまざまなレベルのサブスクリプションがあります。

  • 無料
  • プレミアム
  • 満杯

バックエンドでは、高度なカスタム フィールド (通常の WP カスタム フィールドとして完全に機能します) を使用していくつかのカスタム フィールドを設定しました。そのサービスのカスタム フィールドは「subscription_level」と呼ばれ、上記のオプションを含むドロップダウン リストです。

私が達成しようとしているのは、購読レベルの順序とアルファベット順に投稿を表示することです。最初に、すべての「フル」サービスをタイトルでソートし、次に「プレミアム」サービス、「無料」サービスの順に並べます。

お気に入り:

- - 満杯 - -

フルサービスA

フルサービスB

フルサービスC

---- プレミアム ---

プレミアムサービスA

プレミアムサービスB

プレミアムサービス C

- - 無料 - -

無料サービスA

無料サービスB

無料サービスC

理想的には、これにもページネーションが必要ですが、それが不可能な場合でも、それは世界の終わりではありません。

Codexの指示を見て、いくつかのカスタム選択クエリを試しましたが、うまくいきませんでした。私の問題は、「オーダーバイ」の2つの方法が必要ですか? カスタムフィールド「subscription_level」のmeta_valueに従って投稿を分割し、同時にサブスクリプションの各レベルをタイトルで注文するもの...そして、これを達成する方法を見つけることができないようです.

私を正しい方向に向けるアイデアは素晴らしいでしょう!

前もって感謝します

4

1 に答える 1

0

私が問題を理解することを願っています:

  • post_type "services"があります(またはこれは実際には標準の投稿です)
  • これらの各サービスには、カスタムフィールドに保存された「無料」、「プレミアム」、「フル」などのサブスクリプションレベルがあります。

したがって、最初に行うことは、投稿をこれらのレベルに分類することです。

その後、これらのレベル内で、投稿はタイトル(またはその他)に従って並べ替える必要があります。

1つのカスタムSQLクエリでこれを簡単に実現できるかどうかはわかりません。それは次のようなものになると思います:

SELECT * FROM wp_posts,wp_postmeta.meta_value INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id WHERE wp_posts.post_status='publish' AND wp_postmeta.meta_key = "service" ORDER BY wp_postmeta.meta_value, wp_posts.post_title, ASC

しかし、これが複雑になった場合は、この目的を達成するために別の方法を選択できます。すべての「フルサービス」投稿のID、すべての「プレミアムサービス」投稿のID、およびすべての「無料サービス」投稿のIDを収集します。

SELECT wp_posts.post_ID FROM wp_posts INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id WHERE wp_postmeta.meta_key = "service" and wp_postmeta.meta_value="premium"

(サービスの種類ごとにこれを行います)

その後、'posts_in'-arrayまたは別のカスタムSQL-Queryを使用してWP_QUERYを実行し、収集した投稿をタイトルまたは新しい値で並べ替えます。

使用するページングの種類に応じて、カスタムページングを簡単な方法で自分で統合する方法についてのブログ投稿があります。

http://www.blackbam.at/blackbams-blog/2011/07/18/implementing-a-simple-and-flexible-paging-algorithm-using-php/

お役に立てれば。

于 2011-08-31T12:14:19.340 に答える