web-dev-qa-db-ja.com

カスタム投稿タイプでget_template_part()およびget_post_format()を使用する正しい方法は?

カスタムポストタイプの「コンペ」があります。たとえば、カテゴリリストでこのCPTの表示をカスタマイズするには、次のようにします。

  • category-competitions.phpファイルを作成する
  • content-competitions.phpファイルを作成する
  • そのファイルのループ内で、get_template_part('content-competitions', get_post_format() )'を呼び出します。

これはうまくいきますが、これが正しい方法であるかどうかはわかりません。その1行を変更するには、category-competitions.phpファイル全体を含める必要がありますか。それとも、これを実現するための組み込みの方法がありませんか。

2
EpF

content-competitions-<post-format>.phpが含まれます。それがあなたが望むものであるかどうか私は知りませんが、それは構造が行く限り正しいです。

私はあなたが「その1行を変更する」ということが何を意味するのかもわかりませんが、get_template_partは2つのパラメータを使ってファイル名/パスを作成します。コーデックスの の説明を見てください

<?php get_template_part( 'loop', 'index' ); ?>

この優先順位で、これらの中に存在する最初のファイルに対してPHP require()を行います。

        wp-content/themes/twentytenchild/loop-index.php
        wp-content/themes/twentyten/loop-index.php
        wp-content/themes/twentytenchild/loop.php
        wp-content/themes/twentyten/loop.php

get_template_partで得られるものは

  1. 「子供または親のテーマ名」、最初のもの、次に他のもの
  2. プラス「最初のパラメータ」
  3. プラス「 - 」
  4. プラス「第2パラメータ」
  5. プラス ".php"

それとも….

  1. 「子供または親のテーマ名」、最初のもの、次に他のもの
  2. プラス「最初のパラメータ」
  3. プラス ".php"

... 2番目のパラメータを持つものが見つからない場合.

近道はありません。 WordPressはどのファイルを含めたいのか推測できません。

あなたがあなたのファイルにpostformat.phpのような名前を付けることができるなら、あなたは最初のパラメータだけを使うことでやめることができます:

get_template_part( get_post_format() );

それがそのpost-format.phpファイルがその名前付きの投稿フォーマットを持つすべての投稿に使用される可能性があるので可能性があるかどうか私は知りません。

4
s_ha_dum