WordPressで特定のテンプレートの固定ページ一覧を取得する

WordPressで特定のテンプレートが適用されている固定ページの一覧を取得する方法を紹介します。

テンプレートの作成

まず、固定ページのテンプレートを作成します。

<?php
/*
 Template Name: テストテンプレート
 */

テンプレートの登録

固定ページの編集画面にテンプレートの選択項目が表示されるので、適当な固定ページでテンプレートを変更します。

データベースを確認してみる

postmetaテーブルを確認すると、_wp_page_templateというキーでテンプレートのファイル名が登録されていることが分かります。

一覧の取得

meta_queryを指定して、該当データを取得することができます。

$args = array(
  'post_type' => 'page',
  'meta_query' => array(
    array(
      'key' => '_wp_page_template',
      'value' => 'template_test.php',
      'type' => 'CHAR',
      'compare' => '='
    ),
  ),
);
$the_query = new WP_Query($args);
if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
  the_title('<h1>', '</h1>');
endwhile; wp_reset_postdata(); endif;

最後に

テンプレートを登録した後にファイル名を変更してもメタ情報は更新されないので、その場合は固定ページの編集画面から再登録しなくてはいけません。
予め慎重にファイル名を決めるようにしましょう。

コメント