web-dev-qa-db-ja.com

割り当たられたテンプレートでページをフィルタリングする

確定テンプレートが割り当てられたページを取得したいのですが。関数get_pages()はテンプレートで選択するパラメータを持っていません。たとえば、Home、Page 1、およびPortfolioの3つのページを作成したとします。デフォルトテンプレートをHomeとPageにアサインした後、 "ポートフォリオテンプレート"をPortfolio Pageにアサインした後たとえば、「ポートフォリオテンプレート」を使用しているページのみを取得する方法はありますか。

あなたが私を正しい方向に推し進める機能を知っているならば、私に助言してください。

ありがとう。

1
Marcos

何を達成しようとしているのか正確にはわからないが、これにページテンプレートを使用するのが最善の解決策であるのか、それともポートフォリオアイテムにカスタム投稿タイプを使用してから表示するのにカスタムアーカイブページを使用するのかを検討する必要があります。とにかく、私は掘る….

ページが使用するように設定されているテンプレートは、キー_wp_page_templateを使用してpost metaに定義されています。 query_postsの代わりにget_pagesメソッドを使用する場合は、クエリの一部としてメタ値を使用することもできます。

私の例では、Portfolioページテンプレートのファイル名はpage-portfolio.phpです。あなたはあなたのものに合うように下記の質問を変える必要があるでしょう。

query_posts(array(
    'post_type' =>'page',
    'meta_key'  =>'_wp_page_template',
    'meta_value'=>'page-portfolio.php',
));

テンプレートファイルでこのクエリを使用する場合は、通常のWordPressループを使用して結果を繰り返すことができます。必要に応じて、クエリに他のすべての可能なパラメータを追加してさらに絞り込むこともできます。