web-dev-qa-db-fra.com

Comment utiliser correctement get_template_part () et get_post_format () avec des types de publication personnalisés?

J'ai un type personnalisé de "compétitions". Afin de personnaliser l'affichage de ce CPT dans, par exemple, les listes de catégories, je procède comme suit:

  • Créer un fichier category-competitions.php
  • Créer un fichier content-competitions.php
  • Dans la boucle de ce fichier, appelez get_template_part('content-competitions', get_post_format() )'

Cela fonctionne, mais je ne suis pas sûr que ce soit la bonne méthode. Est-il nécessaire d'inclure l'ensemble du fichier category-competitions.php pour modifier cette ligne ou existe-t-il une méthode intégrée permettant d'y parvenir qui me manque?

2
EpF

Ce que vous avez fait comprendra content-competitions-<post-format>.php. Je ne sais pas si c'est ce que vous voulez, mais c'est correct en ce qui concerne la structure.

Je ne sais pas non plus ce que vous entendez par "modifier cette ligne", mais get_template_part utilisera les deux paramètres pour créer un nom/chemin de fichier. Par conséquent, vous devez absolument tous les inclure. Regardez le explication dans le Codex :

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

fera un PHP require() pour le premier fichier existant parmi ceux-ci, dans cette priorité:

        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

Ce que vous obtenez avec get_template_part est

  1. "nom du thème enfant ou parent", l'un après l'autre
  2. plus "premier paramètre"
  3. Plus "-"
  4. plus "second paramètre"
  5. plus ".php"

Ou ...

  1. "nom du thème enfant ou parent", l'un après l'autre
  2. plus "premier paramètre"
  3. plus ".php"

... si rien n'a été trouvé avec le second paramètre.

Il n'y a pas de raccourci. WordPress ne peut pas deviner quel fichier vous souhaitez inclure.

Si vous pouviez nommer vos fichiers avec quelque chose comme postformat.php, vous pourriez vous en tirer en utilisant uniquement le premier paramètre:

get_template_part( get_post_format() );

Je ne sais pas si c'est une possibilité, car ce fichier post-format.php serait utilisé pour toute publication ayant ce format.

4
s_ha_dum