Je comprends que, lorsque vous utilisez get_template_part('content', get_post_format());
, vous aiderez à choisir un post format
pour une page spécifique en fonction du format de publication.
Et s'il n'y a pas de format de publication 'c'est-à-dire standard', il se repliera sur content.php
Mais que se passe-t-il si j'ai utilisé content-single.php
avec une logique comme celle-ci:
if (get_post_format() == false) {
get_template_part('content', 'single');
} else {
get_template_part('content', get_post_format());
}
Ai-je toujours besoin de la page content.php
? Existe-t-il d'autres fonctionnalités que je ne connais pas?
Non, content.php
et content-single.php
ne sont pas la même chose.
Dans votre exemple CODE:
if (get_post_format() == false) {
get_template_part('content', 'single');
} else {
get_template_part('content', get_post_format());
}
WordPress chargera content-single.php
lorsque get_post_format()
sera false
. Cependant, get_template_part( $slug, $name )
peut toujours essayer de charger content.php
lorsque vous l'appelez avec get_template_part('content', get_post_format());
dans l'exemple suivant:
get_post_format()
renvoie (par exemple) video
.
Mais vous n’avez pas le fichier de pièce modèle content-video.php
.
En résumé, même lorsque get_post_format()
n'est pas false
, content.php
vous fournira quand même le modèle par défaut si le modèle correspondant au format post correspondant n'a pas été créé.
ligne inférieure: quel que soit le
$slug
principal, il est toujours judicieux de conserver le fichier de pièce modèle par défaut en tant que pièce de modèle de secours finale (dans votre cas,content.php
est ce fichier de pièce de modèle de secours par défaut). alors oui, vous en aurez peut-être encore besoin. Alors ne le supprimez pas, laissez-le tranquille.
Ce qui suit est la partie du code de la fonction principale get_template_part
. Vous verrez que le noyau charge toujours $templates[] = "{$slug}.php";
en tant que fichier de modèle de secours final:
function get_template_part( $slug, $name = null ) {
// ... more CODE from WP core
$templates = array();
$name = (string) $name;
if ( '' !== $name )
$templates[] = "{$slug}-{$name}.php";
$templates[] = "{$slug}.php";
locate_template($templates, true, false);
}
Ensuite, dans locate_template
function, il parcourt le tableau $templates
jusqu'à ce qu'il trouve le fichier correspondant, avec le CODE suivant:
function locate_template($template_names, $load = false, $require_once = true ) {
$located = '';
foreach ( (array) $template_names as $template_name ) {
if ( !$template_name )
continue;
if ( file_exists(STYLESHEETPATH . '/' . $template_name)) {
$located = STYLESHEETPATH . '/' . $template_name;
break;
} elseif ( file_exists(TEMPLATEPATH . '/' . $template_name) ) {
$located = TEMPLATEPATH . '/' . $template_name;
break;
} elseif ( file_exists( ABSPATH . WPINC . '/theme-compat/' . $template_name ) ) {
$located = ABSPATH . WPINC . '/theme-compat/' . $template_name;
break;
}
}
if ( $load && '' != $located )
load_template( $located, $require_once );
return $located;
}
Ainsi, comme vous pouvez le voir dans le code ci-dessus, si vous supprimez content.php
et si l'utilisateur du thème a un format de publication pour lequel vous n'avez pas de fichier de modèle, WordPress ne trouvera pas le fichier de modèle auquel se référer, alors simplement. ne chargez rien dans ce cas. Lors de la dernière tentative, WordPress tente de charger un fichier pièce modèle à partir du répertoire wp-includes/theme-compat/
core, mais il n’existe pas de fichier pièce modèle content.php
dans WP core.
Remarque: Cependant, si vous créez un thème enfant et que le thème parent contient déjà le fichier
content.php
, vous n'avez pas besoin du fichiercontent.php
dans le thème enfant (si vous ne modifiez pas là-bas), car dans ce cas, WordPress utilisera le fichiercontent.php
du thème parent comme fichier de pièce du modèle de repli.
Vous pourriez vous en tirer avec un seul modèle (content.php). C'est généralement moins qu'idéal.
Le blog de the teamtreehouse devrait clarifier votre question.
Pour moi, cette approche est une solution de secours.