web-dev-qa-db-fra.com

Suis-je censé créer un thème enfant pour chaque thème que j'utilise?

Je viens tout juste d'apprendre les thèmes relatifs aux enfants et je me demandais s'il était nécessaire de créer un thème spécifique pour chaque thème que je crée. Je trouve ça bizarre de voir comment les autres thèmes fonctionnent bien sans les thèmes enfants, et les autres non.

1
Aurora Afable

Les thèmes pour enfants ne sont pas le seul moyen d'étendre un thème, pas même le meilleur.

De nombreux thèmes offrent des points d'ancrage: actions et filtres. Vous pouvez les utiliser pour changer la sortie par plugin.

Supposons que vous ayez un thème nommé Acme , et son index.php contient le code suivant:

get_header();

do_action( 'acme.loop.before', 'index' );
?>
    <div id="container">
        <div id="content" role="main">

            <?php
            /*
             * Run the loop to output the posts.
             * If you want to overload this in a child theme then include a file
             * called loop-index.php and that will be used instead.
             */
            get_template_part( 'loop', 'index' );
            ?>
        </div><!-- #content -->
    </div><!-- #container -->

<?php
do_action( 'acme.loop.after', 'index' );

do_action( 'acme.sidebar.before', 'index' );
get_sidebar();
do_action( 'acme.sidebar.after', 'index' );

get_footer();

Maintenant, vous pouvez écrire un petit plugin pour ajouter des wrappers (peut-être pour une seconde image de fond) autour de ces zones spécifiques:

add_action( 'acme.loop.before', function( $template ) {
    if ( 'index' === $template )
        print "<div class='extra-background'>";
});

add_action( 'acme.loop.after', function( $template ) {
    if ( 'index' === $template )
        print "</div>";
});

Ajoutez d'autres plugins séparés pour d'autres modifications.

Cela présente quatre avantages:

  1. Vous pouvez désactiver le comportement supplémentaire de votre administration de plug-in si vous ne le souhaitez plus. Contrairement aux thèmes enfants, vous le faites pour chaque plug-in séparément, vous n'avez pas besoin de transformer chaque personnalisation comme vous le faites lorsque vous n'avez qu'un seul thème enfant.

  2. Il est beaucoup plus rapide qu'un thème enfant, car lorsque WordPress recherche un modèle et ne le trouve pas, il effectue une recherche à la fois dans les thèmes enfant et parent. Cela ne peut pas arriver s'il n'y a pas de thème enfant.

  3. Il est plus facile de déboguer quand quelque chose ne va pas. Avec les thèmes enfants, il est difficile de voir d'où provient une erreur, un thème enfant ou parent. Ou les deux, c'est extra amusant.

  4. Mises à jour sécurisées. Parfois, lorsque vous mettez à jour un thème parent, le thème enfant ne fonctionne plus, ou pire: il fonctionne différemment. Cela pourrait même générer une erreur fatale, car vous utilisez une fonction du thème enfant qui n'est plus disponible dans le thème parent.

Résumé: Utilisez des crochets chaque fois que vous le pouvez. Utilisez un thème enfant uniquement si le thème parent ne propose pas un bon crochet. Demandez à l'auteur du thème d'ajouter le crochet manquant. Si vous pouvez proposer un cas d'utilisation valide, je suis sûr qu'il/elle le mettra en œuvre.

4
fuxia

Pour moi, la règle de base est-ce que je prolonge/révise un thème existant? Si c'est le cas, je souhaite pouvoir mettre à jour le thème (en supposant qu'il soit bien pris en charge) sans modifier toutes mes modifications. Vous pouvez lire plus ici dans le codex.

Si je crée quelque chose de personnalisé, je préfère utiliser mon propre thème de démarrage (ou quelque chose comme Underscores ) et modifier le thème lui-même.

1
Yarwood