web-dev-qa-db-fra.com

Masquer les textes d'en-tête dans Custom-header.php

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 UnderscoresNAME _ et Twenty Seventeen. Je ne comprends tout simplement pas pourquoi le code suivant fonctionne et ce qu'il fait pour masquer Site Title et Taglinename__, 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 ifdevrait 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?

1
Friedrich Siever

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.

1
Fayaz