J'essaie actuellement d'améliorer mes compétences en développement de thèmes et j'ai encore beaucoup à apprendre en php.
J'étudie le code des thèmes Underscores
NAME _ et Twenty Seventeen
. Je ne comprends tout simplement pas pourquoi le code suivant fonctionne et ce qu'il fait pour masquer Site Title
et Tagline
name__, si la case à cocher Display Site Title and Tagline
dans Customizer est décochée.
Dans custom-header.php
, après avoir configuré l'en-tête personnalisé avec une couleur de texte par défaut de #000000
, les thèmes ont configuré une fonction pour le style de l'en-tête:
function underscores_header_style() {
$header_text_color = get_header_textcolor();
/*
* If no custom options for text are set, let's bail.
* get_header_textcolor() options: Any hex value, 'blank' to hide text. Default: add_theme_support( 'custom-header' ).
*/
if ( get_theme_support( 'custom-header', 'default-text-color' ) === $header_text_color ) {
return;
}
// If we get this far, we have custom styles. Let's do this.
?>
<style type="text/css">
Si je règle maintenant la couleur du texte d'en-tête sur #000000
dans le Customizer, la première clause if
devrait devenir vraie à mon avis, le return;
devrait mettre fin à la fonction et la partie de style suivante pour le masquage et au-delà ne fonctionnerait pas.
Jusqu'ici, j'ai vérifié avec var_dump()
pour get_header_textcolor()
et get_theme_support('custom-header', 'default-text-color')
. Les deux valeurs sont 000000
.
Contrairement à ce qui précède, tout fonctionne correctement.
Je ne veux pas simplement "copier-coller" ce numéro dans mon thème, je veux le comprendre. Où est mon erreur de pensée?
Tout d'abord, lorsque vous désélectionnez Display Site Title and Tagline
dans le personnaliseur, la valeur que vous avez déjà insérée dans Header Text Color
n'a pas d'importance, le personnalisateur l'enregistre sous la forme blank
(chaîne non vide, le texte réel "vide") après vous Save & Publish
. Vous pouvez vérifier cela dans la table wp_options
de la base de données après Save & Publish
ou , essayez var_dump()
après avoir quitté le personnaliseur.
Puisque get_header_textcolor()
renvoie blank
et get_theme_support( 'custom-header', 'default-text-color' )
renvoie 000000
, ils ne correspondent pas à la condition if
mentionnée ci-dessus; le masquage fonctionne donc.
Deuxièmement, vous obtenez 000000
avec var_dump()
à la fois pour get_header_textcolor()
et get_theme_support( 'custom-header', 'default-text-color' )
lorsque vous êtes dans le personnalisateur, car celui-ci ne recharge pas la page après la sauvegarde et utilise JavaScript pour afficher/masquer Title
& Tagline
avant de sauvegarder. Si vous fermez le personnaliseur après l'enregistrement, vous verrez que var_dump()
affichera blank
pour get_header_textcolor()
et 000000
pour get_theme_support( 'custom-header', 'default-text-color' )
.
Il s’agit de la ligne que le personnalisateur utilise pour enregistrer la valeur sous la forme blank
dans le fichier wp-admin/js/customize-controls.js
:
control.setting.set( to ? last : 'blank' );
De plus, dans la fonction wp-includes/class-wp-customize-manager.php
du fichier _sanitize_header_textcolor
, vous verrez que WordPress autorise blank
à être une entrée valide pour header_textcolor
avec toute valeur de couleur valide au format hexadécimal. :
if ( 'blank' === $color )
return 'blank';
Donc, votre logique était correcte, mais vous vous êtes trompé de valeur.