私は、一連の記事をまとめるために使用するカスタムタクソノミーを持っています(シリーズはそのタクソノミの用語です)。私が望むのは、WordPressループを実行するときに、バンドルされた投稿を特殊なケースとして扱うことです。WordPressループのカスタムタクソノミからの最後の投稿を表示
シリーズの最初の投稿(最新の日付のもの)のみが表示され、カスタム分類の用語に属していない他の投稿はすべて通常の投稿として扱われます。カスタムシリーズタクソノミとは別に、投稿にタグを付けたり、カテゴリを分類したりすることもできます(カスタムタグも含めて最大3つの分類が可能です)。ループには一定数の投稿(たとえば、WordPressバックエンドに設定されたフロントページの投稿の数)が含まれている必要があります。
私はこれらの投稿をグループ化する方法が失われています。その理由の1つは、すべてのデータが異なるテーブルにあり、各エントリが複数のタクソノミに属している可能性があるからです。もちろん、posts配列をループして、MySQLコールの後でシリーズ内の古い投稿を破棄することは可能ですが、その場合、固定数の投稿をデータベースに追加クエリを作成しなければ維持することは困難です。
私は純粋なSQLソリューションを実装したいと思います。私はposts_clauses
フックを試してみました。以下のクエリは、日付ではなくIDが最も高い投稿を返します。データベースに負担をかけると私は信じています。 WordPressの上記の条項に基づいて
$clauses['fields'] .= ", $wpdb->posts.ID AS postID, (SELECT $wpdb->terms.term_id
FROM $wpdb->posts, $wpdb->term_taxonomy, $wpdb->term_relationships, $wpdb->terms
WHERE $wpdb->posts.ID=postID
AND $wpdb->term_taxonomy.taxonomy='post-series'
AND $wpdb->term_relationships.term_taxonomy_id=$wpdb->term_taxonomy.term_taxonomy_id
AND $wpdb->posts.ID=$wpdb->term_relationships.object_id
AND $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id
ORDER BY $wpdb->posts.post_date DESC
LIMIT 0,1) AS uniqueID";
$clauses['groupby'] = "IFNULL(uniqueID,$wpdb->posts.ID)";
は、次のSQLクエリを作成:
SELECT SQL_CALC_FOUND_ROWS wp_posts.*, wp_posts.ID AS postID,
(SELECT wp_terms.term_id FROM wp_posts, wp_term_taxonomy, wp_term_relationships, wp_terms
WHERE wp_posts.ID=postID
AND wp_term_taxonomy.taxonomy='post-bundles'
AND wp_term_relationships.term_taxonomy_id=wp_term_taxonomy.term_taxonomy_id
AND wp_posts.ID=wp_term_relationships.object_id
AND wp_terms.term_id=wp_term_taxonomy.term_id
ORDER BY wp_posts.post_date DESC LIMIT 0,1)
AS uniqueID FROM wp_posts
WHERE 1=1
AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')
GROUP BY IFNULL(uniqueID,wp_posts.ID)
ORDER BY wp_posts.post_date DESC
LIMIT 0, 10
私はまたthis tutorialを読んだが、私はそれが、この場合に適用されるかわかりません。
要約:ループでは、カスタム分類からの最新の投稿(post_dateで注文)を表示し、その分類内の他の投稿をループ内で除外したいだけです。ループにはカスタムタクソノミの一部ではない通常の投稿も含まれ、両方のタイプは複数のカテゴリに属しタグを持つことができます。ここで[OK]を
私はトリックを行う必要がありますSQLクエリを投稿する場合、あなたのための任意の使用です。 wordpressがクエリを構築する方法について私は何も知らないので? – Miguelo
私はそれが大きな助けになると思います! WordPressでクエリを作成しても問題はありません。 – mensch
質問と希望の結果とともにサンプルレコードを追加できる方がずっと良いでしょう。ありがとう。 –