web-dev-qa-db-fra.com

Customizer: sortie de la valeur par défaut dans Customizer CSS

J'ai vu le code ci-dessous dans l'API de personnalisation de thème WordPress et plusieurs thèmes permettant d'afficher CSS CSS de Customizer dans head. Cela fonctionne très bien, mais je me demande s’il peut être modifié pour afficher une valeur par défaut, si aucune valeur n’est donnée pour header_textcolor, background_color ou link_textcolor.

public static function header_output() {
  ?>
  <!--Customizer CSS--> 
  <style type="text/css">
       <?php self::generate_css('#site-title a', 'color', 'header_textcolor', '#'); ?> 
       <?php self::generate_css('body', 'background-color', 'background_color', '#'); ?> 
       <?php self::generate_css('a', 'color', 'link_textcolor'); ?>
  </style> 
  <!--/Customizer CSS-->
  <?php
}

public static function generate_css( $selector, $style, $mod_name, $prefix='', $postfix='', $echo=true ) {
  $return = '';
  $mod = get_theme_mod($mod_name);
  if ( ! empty( $mod ) ) {
     $return = sprintf('%s { %s:%s; }',
        $selector,
        $style,
        $prefix.$mod.$postfix
     );
     if ( $echo ) {
        echo $return;
     }
  }
  return $return;
}
1
Troy Templeman

Pour avoir une valeur par défaut pour get_theme_mod(), vous pouvez le passer comme deuxième argument, comme ceci:

$mod = get_theme_mod( 'header_textcolor', '#000000' );

#000000 sera généré s'il n'y a pas de valeur enregistrée pour header_textcolor.

Étant donné que votre appel get_theme_mod() obtient le paramètre d'une autre fonction, generate_css(), vous devrez mettre à jour cette fonction pour envoyer également un paramètre par défaut:

public static function generate_css( $selector, $style, $mod_name, $default, $prefix='', $postfix='', $echo=true ) {
    $return = '';
    $mod = get_theme_mod( $mod_name, $default );

Je l'ai ajouté après $mod_name dans cet exemple.

Ensuite, vous mettriez à jour votre fonction header_output() pour inclure les valeurs par défaut:

public static function header_output() {
  ?>
  <!--Customizer CSS--> 
  <style type="text/css">
       <?php self::generate_css('#site-title a', 'color', 'header_textcolor', '#000000', '#'); ?> 
       <?php self::generate_css('body', 'background-color', 'background_color', '#FFFFFF', '#'); ?> 
       <?php self::generate_css('a', 'color', 'link_textcolor', '#0000FF' ); ?>
  </style> 
  <!--/Customizer CSS-->
  <?php
}

Il existe maintenant des valeurs par défaut pour ces couleurs.

Je pense que cela vaut la peine de souligner cependant que votre code ne générera aucune CSS si le mod thème n'a pas de valeur. Cela signifie que les styles par défaut proviendront de votre feuille de style. Donc, je ne suis pas sûr qu'il soit nécessaire d'avoir des valeurs par défaut ici.

1
Jacob Peattie