Plate-forme de personnalisation de thème – Options conditionnelles, thèmes enfants et plug-ins

  1. 1. Introduction au personnalisateur de thème WordPress
  2. 2. Interagir avec le personnalisateur de thème WordPress
  3. 3. Plaque chauffante du personnalisateur de thème WordPress
  4. 4. Extension de la chaudière de personnalisation du thème WordPress
  5. 5. En train de lire: Plate-forme de personnalisation de thème – Options conditionnelles, thèmes enfants et plug-ins

Jusqu’à présent, nous avons vu à quel point il est simple de gérer les options de thème à l’aide de Theme Customizer Boilerplate et de ses crochets. Comme vous vous en souvenez probablement, l’étape la plus importante a été «Thsp_cbp_options_array» crochet de filtre et en lui passant un tableau d’options que vous souhaitez utiliser dans votre thème.


Je suis sûr que vous connaissez déjà l’action et les filtres de filtrage WordPress – Plugin API – et comment ils fonctionnent, mais juste au cas où, voici un bref récapitulatif (en utilisant les crochets de filtre comme exemple). Vous pouvez définir votre fonction personnalisée et la connecter à un filtre existant à l’aide de la fonction add_filter:

add_filter ($ tag, $ function_to_add, $ priority, $ accepté_args);

Concentrons-nous sur l’argument prioritaire. Sa valeur par défaut est 10, donc si vous n’utilisez pas un autre nombre, c’est la priorité d’exécution de votre fonction. Baissez le nombre, plus tôt votre fonction est exécutée. Donc, si vous faites quelque chose comme ça:

// Ajout du premier message
fonction my_theme_add_first_message ($ content) {
$ content. = '

premier message

» renvoyer $ content; } add_filter ('the_content', 'my_theme_add_first_message', 1); // Ajout d'un deuxième message function my_theme_add_second_message ($ content) { $ content. = '

Deuxième message

» renvoyer $ content; } add_filter ('the_content', 'my_theme_add_second_message', 2);

Lorsque vous appelez la fonction_content dans single.php ou tout autre contenu de publication de modèle sera affiché, suivi du premier message, suivi du deuxième message. Pas parce que c’est leur ordre dans cet extrait de code, mais à cause du paramètre de priorité d’exécution. Pensez aux crochets comme s’ils étaient des boules de neige dévalant la colline ramassant toutes sortes de choses sur leur chemin.

Comment cela s’applique-t-il à la chaudière de personnalisation de thème?

Vous pouvez vous connecter «Thsp_cbp_options_array» à partir du fichier function.php de votre thème, en utilisant une fonction personnalisée (par exemple my_theme_options_array) avec une valeur de priorité définie à 1. Cela signifie toute autre fonction qui se connecte à «Thsp_cbp_options_array» le crochet de filtre le fera APRÈS la fonction my_theme_options_array que vous avez déjà définie. Jetez un œil à cet exemple:

function my_theme_options_array () {
// Utilisation de la fonction d'assistance pour obtenir la capacité requise par défaut
$ thsp_cbp_capability = thsp_cbp_capability ();

$ options = tableau (
// ID de section
'my_theme_new_section' => tableau (

'existing_section' => faux,
'args' => tableau (
'title' => __ ('Nouvelle section', 'my_theme_textdomain'),
'priorité' => 10
),
'champs' => tableau (
/ *
* Champ radio
* /
'my_radio_button' => tableau (
'setting_args' => tableau (
'default' => 'option-2',
'type' => 'option',
'capacity' => $ thsp_cbp_capability,
'transport' => 'rafraîchir',
),
'control_args' => tableau (
'label' => __ ('My Radio Button', 'my_theme_textdomain'),
'type' => 'radio', // Commande radio
'choix' => tableau (
'option-1' => tableau (
'label' => __ ('Option 1', 'my_theme_textdomain')
),
'option-2' => tableau (
'label' => __ ('Option 2', 'my_theme_textdomain')
),
'option-3' => tableau (
'label' => __ ('Option 3', 'my_theme_textdomain')
)
),
'priorité' => 3
)
)
)
)
);

return $ options;
}
add_filter ('thsp_cbp_options_array', 'my_theme_options_array', 1);

Cela ajoutera une nouvelle section au personnalisateur de thème avec un champ, appelé Mon bouton radio. Ensuite, vous ou quelqu’un d’autre développez un thème enfant pour votre thème et décidez de conserver la nouvelle section, mais au lieu de Mon bouton radio, il serait préférable d’avoir Ma case à cocher. Facile:

function my_child_theme_options_array ($ options) {
// Utilisation de la fonction d'assistance pour obtenir la capacité requise par défaut
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Cette fois, nous modifions uniquement les champs de my_theme_new_section dans le tableau $ options
* /
$ options ['my_theme_new_section'] ['champs'] = tableau (
'my_checkbox_field' => tableau (
'setting_args' => tableau (
'default' => true,
'type' => 'option',
'capacity' => $ thsp_cbp_capability,
'transport' => 'rafraîchir',
),
'control_args' => tableau (
'label' => __ ('Ma case à cocher', 'my_theme_textdomain'),
'type' => 'case à cocher', // Contrôle de champ de case à cocher
'priorité' => 2
)
)
);

return $ options;
}
add_filter ('thsp_cbp_options_array', 'my_child_theme_options_array', 2);

Vous avez remarqué que je n’ai pas passé le paramètre $ options à my_theme_options_array et l’ai-je fait dans la fonction my_child_theme_options_array? C’est parce que quand je me suis «Thsp_cbp_options_array» hook Je voulais remplacer les options d’exemple de la chaudière de personnalisation du thème. Ensuite, lorsque je me suis à nouveau connecté à celui-ci à partir de mon thème enfant, je ne voulais pas supprimer complètement les options du thème parent, juste les modifier légèrement. C’est pourquoi je ne fais que jouer avec $ options [‘my_theme_new_section’] [‘champs’], pas avec tout le tableau $ options.

Bien sûr, vous pouvez également vous connecter à «Thsp_cbp_options_array» filtrez le crochet de votre thème parent plus d’une fois. Supposons que vous ayez choisi de ne pas ajouter de fonctionnalités de territoire de plug-in à votre thème et de laisser les plug-ins faire ce qu’ils sont censés faire. Maintenant, vous voulez afficher certaines options de personnalisation de thème uniquement si un certain plugin est actif. Encore une fois, c’est facile:

function my_plugin_dependency_options_array ($ options) {
// Utilisation de la fonction d'assistance pour obtenir la capacité requise par défaut
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Ajout de my_plugin_dependency_section uniquement si 'test-plugin.php' est actif
* /
if (is_plugin_active ('test-plugin / test-plugin.php')) {

$ options ['my_plugin_dependency_section'] = tableau (
'existing_section' => faux,
'args' => tableau (
'title' => __ ('Dépendance du plugin', 'my_theme_textdomain'),
'priorité' => 10
),
'champs' => tableau (
/ *
* Champ de texte
* /
// ID de champ
'new_text_field' => tableau (
'setting_args' => tableau (
'default' => __ ('', 'my_theme_textdomain'),
'type' => 'option',
'capacity' => $ thsp_cbp_capability,
'transport' => 'rafraîchir',
),
'control_args' => tableau (
'label' => __ ('N'affiche que si', 'my_theme_textdomain'),
'type' => 'text', // Contrôle du champ de texte
'priorité' => 5
)
),
)
);

}

return $ options;
}
add_filter ('thsp_cbp_options_array', 'my_plugin_dependency_options_array', 3);

Vous souhaitez développer un plugin de fonctionnalité de base à utiliser avec votre thème (comme vous le devriez)? Vous pouvez vous connecter «Thsp_cbp_options_array» à partir de l’un des fichiers de votre plugin, de la même manière que vous le feriez à partir d’un fichier function.php d’un thème.

Don’t Go Option Crazy

Chaque fois que vous ajoutez des options à un thème que vous développez, vous devez conserver l’un des principes de base de WordPress – Décision et non options – à l’esprit. Il est facile de se laisser emporter et de commencer à ajouter des options utilisateur pour chaque détail mineur de votre thème, mais cela ne rend service à personne. J’espère que ces quelques astuces, en particulier l’ajout d’options dépendantes des plugins, aideront à garder le nombre d’options de votre thème aussi bas que possible.

Après tout, si votre thème a des options pour des choses comme chaque rayon de bordure de chaque élément, ce n’est pas un thème, c’est un éditeur WYSIWYG et probablement pas un grand.

Vous n’achetez pas une chemise blanche parce qu’avec un effort supplémentaire vous pouvez la transformer en nappe, vous l’achetez parce que vous aimez sa “blancheur”. Les thèmes WordPress devraient être comme ça aussi, ils devraient présenter le contenu d’une certaine manière, pas essayer de tout faire de toutes les manières imaginables. Si vous êtes un développeur de thème, c’est votre travail de vous assurer que les attentes des utilisateurs sont ce qu’elles devraient être..

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map