Quand utiliser les balises de template et quand utiliser get_template_part()
et quand utiliser function.php
? Je suis confus à eux.
Par exemple, si je souhaite afficher les portefeuilles associés sous un seul portefeuille, je peux créer une balise de modèle nommée show_related_portfolios()
.
En revanche, je peux créer un fichier nommé content-related-portfolios.php
et l’utiliser comme get_template_part( 'content', 'related-portfolios' )
.
Ou je peux créer une fonction qui récupère les portefeuilles associés dans functions.php
.
Existe-t-il des meilleures pratiques pour les utiliser?
Une balise de modèle est juste une fonction, je ne peux donc pas comprendre la différence entre une fonction dans functions.php
et une balise de modèle.
Donc les choiches sont 2: fonction VS fichier.
Le bon choix dépend au cas par cas, et toutes choses @ shazzad pointées m'ont trouvé d'accord.
Je préfère utiliser file et get_template_part
lorsque le code doit contenir beaucoup de code HTML, car je n'aime pas avoir des fonctions qui ouvrent et ferment les balises php ou avec un grand écho de sortie HTML.
En résumé, je préfère les fichiers lorsque la fonctionnalité requise concerne uniquement la présentation et les fonctions lorsque j’ai besoin de quelques calculs.
Parfois, j'utilise les deux, par exemple:
if ( ! function_exists('show_related_portfolios') ) {
function show_related_portfolios( $someargs = array() ) {
$defaults = array( ... );
$args = wp_parse_args( $someargs, $defaults );
$related_q = new WP_query();
if ( $related_q->have_posts() ) {
while( $related_q->have_posts() ) { $related_q->the_post();
// template for singular related portfolio
get_template_part( 'content', 'related-portfolio' );
}
}
wp_reset_postdata();
}
}
de cette façon, je peux utiliser les arguments de la fonction, déplacer la grande partie de php à l'intérieur d'une fonction et le modèle peut être simplement du code HTML pour la plupart.
L'utilisation de la fonction permet également d'utiliser la fonctionnalité en tant que shortcode avec très peu de travail.
Notez l'instruction if ( ! function_exists('show_related_portfolios') ) {
: cette option empêche l'erreur si la fonction est déjà définie et permet en outre aux thèmes enfants de remplacer complètement la fonction. En outre, grâce à l'utilisation de get_template_part
, les thèmes enfants peuvent facilement remplacer l'affichage de l'élément singulier.
Notez que ceci est juste un cas, celui que vous avez utilisé comme exemple, mais il est impossible une règle générale de ce qui est mieux.
get_template_part()
devrait être un choix correct. Parce que,
Où, en utilisant la fonction personnalisée pourrait -
Avantage d'utiliser la fonction
function( 'Number of related posts', 'Order', 'excluding / inclusion any posts')
etc.file_exists
), ce qui prend un certain temps de chargement, mais les fonctions se chargent beaucoup plus rapidement.C'est mon opinion, d'autres pourraient avoir une meilleure opinion.