カスタム投稿タイプに保存されている多数のプロジェクトを表示する Wordpress サイトで作業しています。各カスタム投稿には、「プロジェクト名」と「プロジェクトの色」の 2 つのカスタム フィールドが含まれています。特定の「プロジェクト名」に関するカスタム投稿が複数ある場合があります。
上記のカスタムフィールドの値から取得した「プロジェクト名」と「プロジェクトの色」をリストするすべてのプロジェクトの凡例 (キー) を作成したいと考えています。
たとえば、「バナナ」という色が「黄色」のプロジェクトが 3 つ、「オレンジ」という色が「オレンジ」のプロジェクトが 6 つ、「緑」の色が「アップル」というプロジェクトが 4 つあるとします。私の凡例 (キー) は、黄色でバナナを 1 つ、オレンジでオレンジを 1 つ、緑でリンゴを 1 つ表示する必要があります。
もちろん、ループを使用すると、バナナ 3 個、オレンジ 6 個、リンゴ 4 個が表示されます。プロジェクト名とプロジェクトの色のリストだけを表示するにはどうすればよいですか?
カスタム分類、配列内の重複のチェック、およびGROUP BY
のフィルターとしての使用の 3 つの方法を見てきましたposts_groupby
。
GROUP BY
正しい方法のように思えますが、何もすることができません。私が得た最も遠いものは、これを私の functions.php に入れることでした...
function sort_legend ( $groupby ) {
global $wpdb;
$groupby .= "{$wpdb->postmeta}.meta_key = 'Color' ";
return $groupby;
}
...そして、それを Query オブジェクトの周りにフィルターとして適用します...
<?php add_filter('posts_groupby', 'sort_legend'); ?>
<?php if ( $myQuery->have_posts() ) while ($myQuery->have_posts() ) : $myQuery->the_post(); ?>
<?php remove_filter('posts_groupby', 'sort_legend'); ?>
...しかし、まだ複数のエントリがあります。