it-swarm.com.de

Customizer: Standardwert in Customizer-CSS ausgeben

Ich habe den folgenden Code in der WordPress Theme Customization API und verschiedenen Themes zur Ausgabe von Customizer CSS in der head gesehen. Es funktioniert gut, aber ich frage mich, ob es geändert werden kann, um einen Standardwert anzuzeigen, wenn für header_textcolor, background_color oder link_textcolor kein Wert angegeben ist.

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

Um einen Standardwert für get_theme_mod() zu erhalten, können Sie diesen als zweites Argument übergeben:

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

Das gibt #000000 aus, wenn für header_textcolor kein Wert gespeichert ist.

Da Ihr get_theme_mod()-Aufruf die Einstellung von einer anderen Funktion, generate_css(), erhält, müssen Sie diese Funktion aktualisieren, um auch eine Standardeinstellung zu senden:

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

Ich habe es in diesem Beispiel nach $mod_name hinzugefügt.

Dann würden Sie Ihre header_output() -Funktion so aktualisieren, dass sie Standardwerte enthält:

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
}

Jetzt gibt es Standardwerte für diese Farben.

Ich denke, es ist jedoch erwähnenswert, dass Ihr Code kein CSS ausgibt, wenn der Theme-Mod keinen Wert hat. Dies bedeutet, dass die Standardstile aus Ihrem Stylesheet stammen. Daher bin ich mir nicht sicher, ob hier Standardeinstellungen erforderlich sind.

1
Jacob Peattie