Quantcast
Viewing all articles
Browse latest Browse all 218

【WordPress】固定ページ一覧を、カスタムフィールドの値で絞り込んで取得する方法

記事一覧をカスタムフィールドの値で絞り込んで取得する方法は検索すれば出てくるのですが、固定ページについては見つけられなかったので記事にしました。

今回何故、固定ページをカスタムフィールドで絞り込む必要があったのかというと、下のページのように会員一覧と会員の個別情報を固定ページで作ってしまったからです。

会員一覧
会員の詳細ページ

今回の設計としては、

  1. 会員毎に、所属地域のカスタムフィールドを設定
  2. ショートコードを地域毎に記載
  3. カスタムフィールドで絞り込まれた会員のみが、所属地域に掲載される

という方針としました。

早速コードです。以下のコードを、functions.php へ記載しました。

//会員一覧


function kaiin($atts) {

$args = array(
	'post_type'=>'page',//固定ページのみを取得
	'orderby'         => 'post_date',//日付でソート
	'order'           => 'ASC',//日付で昇順
	'numberposts'=>'-1',//取得件数に制限を設けない
	'meta_key' => 'area',//絞り込むカスタムフィールドのキー
	'meta_value' => $atts[0],//カスタムフィールドの値
);

$page_list = get_posts($args);


foreach($page_list as $page){
setup_postdata( $page );

$name     = $page->post_title;
$kubun    = get_post_meta($page->ID , 'kubun' ,true);
$url       = get_permalink($page->ID);

$print_html .= <<<EOD
<tr>
<td>{$kubun}</td>
<td><a href="{$url}">{$name}</a></td>
</tr>
EOD;

}


wp_reset_postdata();
return $print_html;


}
add_shortcode('kaiin', 'kaiin');

このコードを書くにあたって一番はまったのは、固定ページ一覧をカスタムフィールドで絞り込むにあたって、get_pages ではうまくいかなかった所です

codex には、 meta_key、meta_value が使えると書いてあったのにです

 get_pages

結果的には、 get_posts が固定ページにも対応しているということが判明したので、 get_posts を使うことにしました。

上のコードでショートコードを生成し、会員一覧ページには、

[kaiin ka]

などと記載すればOKです。

会員詳細ページで、

カスタムフィールドのキー: area
カスタムフィールドの値:ka

を設定した会員のみが絞り込まれて一覧に表示されます。

Image may be NSFW.
Clik here to view.

以上です。

参考になれば幸いです。


Viewing all articles
Browse latest Browse all 218

Trending Articles