※Web開発

wordpress taxonomy term の一覧を表示したいが、フィールドの値によって表示するテンプレートを分けたい

animal_chara_radio ※Web開発

解答例1

フィールドの値によって表示するテンプレートを分けるには、次の手順でコーディングします。

  1. タームのフィールドの値を取得します。
  2. フィールドの値に応じて、表示するテンプレートを指定します。

具体的なコードは、次のようになります。

PHP

// タームのフィールドの値を取得
$field_value = get_field('フィールド名', $term);

// フィールドの値に応じて、表示するテンプレートを指定
switch ($field_value) {
    case '値1':
        get_template_part('taxonomy-term-template1');
        break;
    case '値2':
        get_template_part('taxonomy-term-template2');
        break;
    default:
        get_template_part('taxonomy-term-template-default');
        break;
}

コードは慎重に使用してください。詳細content_copy

たとえば、タクソノミー「カテゴリー」の「色」フィールドの値によって表示するテンプレートを分けたい場合は、次のようになります。

PHP

// タームの「色」フィールドの値を取得
$color = get_field('色', $term);

// 「色」フィールドの値に応じて、表示するテンプレートを指定
switch ($color) {
    case '赤':
        get_template_part('taxonomy-term-template-red');
        break;
    case '青':
        get_template_part('taxonomy-term-template-blue');
        break;
    default:
        get_template_part('taxonomy-term-template-default');
        break;
}

コードは慎重に使用してください。詳細content_copy

このコードでは、まず「色」フィールドの値を取得します。次に、取得した値に応じて、次のいずれかのテンプレートを表示します。

  • 「色」フィールドの値が「赤」の場合、taxonomy-term-template-red テンプレートを表示します。
  • 「色」フィールドの値が「青」の場合、taxonomy-term-template-blue テンプレートを表示します。
  • それ以外の場合、taxonomy-term-template-default テンプレートを表示します。

なお、switch 文の代わりに if 文を使用しても構いません。

PHP

// タームの「色」フィールドの値を取得
$color = get_field('色', $term);

// 「色」フィールドの値が「赤」の場合
if ($color === '赤') {
    get_template_part('taxonomy-term-template-red');
}

// 「色」フィールドの値が「青」の場合
else if ($color === '青') {
    get_template_part('taxonomy-term-template-blue');
}

// それ以外の場合
else {
    get_template_part('taxonomy-term-template-default');
}

コードは慎重に使用してください。詳細

解答例2

フィールドの値によって表示するテンプレートを分けるには、if文やswitch文などを使用して、タームのフィールドの値を判別します。

例えば、タームの「色」フィールドの値によって表示するテンプレートを分けたい場合は、次のようになります。

PHP

// タームのフィールド「色」の値を取得する
$color = $term->term_meta['color'];

// 色によって表示するテンプレートを分岐する
switch ($color) {
  case 'red':
    // 赤色のタームを表示するテンプレートを使用する
    include 'taxonomy-terms-red.php';
    break;
  case 'green':
    // 緑色のタームを表示するテンプレートを使用する
    include 'taxonomy-terms-green.php';
    break;
  case 'blue':
    // 青色のタームを表示するテンプレートを使用する
    include 'taxonomy-terms-blue.php';
    break;
  default:
    // その他の色のタームを表示するテンプレートを使用する
    include 'taxonomy-terms.php';
    break;
}

コードは慎重に使用してください。詳細content_copy

上記のコードでは、まずタームの「色」フィールドの値を取得します。その後、switch文を使用して、値によって表示するテンプレートを分岐しています。

例えば、タームの「色」フィールドの値が「red」の場合は、「taxonomy-terms-red.php」テンプレートを使用します。値が「green」の場合は、「taxonomy-terms-green.php」テンプレートを使用します。値が「blue」の場合は、「taxonomy-terms-blue.php」テンプレートを使用します。それ以外の値の場合は、「taxonomy-terms.php」テンプレートを使用します。

この方法では、フィールドの値が複数ある場合でも、簡単に分岐して表示するテンプレートを分けることができます。

また、if文を使用して、フィールドの値が特定の値に一致する場合のみ、別のテンプレートを使用することもできます。

例えば、タームの「色」フィールドの値が「red」または「green」のみの場合、次のようになります。

PHP

// タームのフィールド「色」の値を取得する
$color = $term->term_meta['color'];

// 色が「red」または「green」の場合、別のテンプレートを使用する
if ($color == 'red' || $color == 'green') {
  // 別のテンプレートを使用する
  include 'taxonomy-terms-red-or-green.php';
} else {
  // デフォルトのテンプレートを使用する
  include 'taxonomy-terms.php';
}

コードは慎重に使用してください。詳細content_copy

上記のコードでは、まずタームの「色」フィールドの値を取得します。その後、if文を使用して、値が「red」または「green」に一致する場合は、別のテンプレート「taxonomy-terms-red-or-green.php」を使用するようにしています。値が一致しない場合は、デフォルトのテンプレート「taxonomy-terms.php」を使用しています。

タイトルとURLをコピーしました