web-dev-qa-db-fra.com

L'image d'en-tête par défaut ne s'affiche pas

Clarification: l'image d'en-tête par défaut ne sera pas RE-affichée (en cliquant sur l'image suggérée) une fois qu'elle a été supprimée à l'aide de l'option "Masquer l'image" du personnalisateur de thème.

  1. J'ai ajouté un support de thème pour Custom Header Image

    // Add Theme Support for Custom Header Image
    add_theme_support( 'custom-header', 
        array(
            'default-image' => get_template_directory_uri() . '/assets/img/hdr_earth.jpg',
            'default-text-color' => '#e2f0d6',
            'header-text' => true,
            'uploads' => true,
            'width' => 1140,
            'height' => 200,
            'wp-head-callback' => 'wpfw_style_header',
        )
    );
    
  2. Dans le personnaliseur de thème, l’image (par défaut) est affichée comme suit:

    • La zone "En-tête actuel", et
    • Dans la case "Suggérée"
  3. J'ai supprimé l'image d'en-tête actuelle en cliquant sur le bouton "Masquer l'image".

Et c'est là que le problème a commencé

Lorsque je tente de ré-ajouter l'image par défaut en cliquant sur l'image "suggérée" (c'est-à-dire par défaut) ...

  1. L'image est affichée dans la fenêtre de personnalisation.
  2. Mais l'image ne sera pas enregistrée, de sorte que l'image ne s'affiche pas sur la page Web.

Un var_dump( get_header_image() ); a retourné false, donc après avoir lu la fonction dans le noyau, je vois ceci if ( 'remove-header' == $url ) return false;.

Donc, une var_dump( get_theme_mods() ) affiche effectivement 'header_image' => string 'remove-header' (length=13).

???

... maintenant c'est après que j'ai ajouté l'image par défaut en arrière et enregistrée.

Qu'est-ce que je rate?

Le script entier (custom-header.php)

    if ( ! function_exists( 'wpfw_custom_header' ) ) {
        function wpfw_custom_header() {
            // Add theme Support for Custom Backgrounds
            add_theme_support( 'custom-background',
                array(
                    'default-color' => '#e2f0d6',
                    'default-image' => get_template_directory_uri() . '/assets/img/bgp-128x180.jpg',
                )
            );

            // Add Theme Support for Custom Header Image
            add_theme_support( 'custom-header', 
                array(
                    'default-image'             => get_template_directory_uri() . '/assets/img/hdr_earth.jpg',
                    'default-text-color'    => '#e2f0d6',
                    'header-text'                   => true,
                    'uploads'                       => true,
                    'width'               => 1140,
                    'height'              => 200,
                    'wp-head-callback'      => 'wpfw_style_header',
                )
            );
        } // end wpfw_custom_header()
    } // end if 

    // Hook into the 'after_setup_theme' action
    add_action( 'after_setup_theme', 'wpfw_custom_header', 11 );

    /**
     * ---------------------------------------------- 
     * Callback function for updating header styles
     * ----------------------------------------------
     */

    if ( ! function_exists( 'wpfw_style_header' ) ) {
        function wpfw_style_header() {
          $text_color = get_header_textcolor();
          ?>  
          <style type="text/css" id="wpfw-custom-header-styles">
              .site-title a.site-title-link {
                color: #<?php echo esc_attr( $text_color ); ?>;
              }

              <?php if ( display_header_text() != true ) : ?>
                  .site-title {
                    display: none;
              } 
              <?php endif; ?> 
          </style>
          <?php 
        } // end wpfw_style_header()
    } // end if...
2
sleeper

Vous devez enregistrer les en-têtes par défaut en utilisant register_defaults_headers - par exemple.

register_default_headers( array(
    'default-image' => array(
        'url'           => get_stylesheet_directory_uri() . '/assets/img/default-header.jpg',
        'thumbnail_url' => get_stylesheet_directory_uri() . '/assets/img/default-header.jpg',
        'description'   => __( 'Default Header Image', 'textdomain' )
    ),
) );

Voir l'entrée du codex pour plus d'informations sur la fonction - https://codex.wordpress.org/Function_Reference/register_default_headers .

Le Codex n'est pas clair, mais cette fonction est en fait requise pour que custom_headers fonctionne correctement.

1
Mark

Essayez ceci lorsque vous avez besoin d’obtenir l’URL de l’image d’en-tête et que vous avez défini la valeur par défaut:

    $url = has_header_image() ? get_header_image() : get_theme_support( 'custom-header', 'default-image' );
0
dewd

Pour être honnête, j'ai une image d'en-tête de travail dans mon customizer en utilisant le code suivant:

Functions.php

/* custom header image */
$headerimage = array(
    'default-image' => '%s/images/image1.jpg',
    'width' => 1920,
    'height' => 1080,
    'flex-height' => false,
    'flex-width' => true,
    'uploads' => true,
    'random-default' => false,
    'header-text' => true,
    'default-text-color' => '',
    'wp-head-callback' => '',
    'admin-head-callback' => '',
    'admin-preview-callback' => '',
);
add_theme_support('custom-header', $headerimage);

Rien dans customizer.php

Où j'appelle l'en-tête-image:

<header class="site-header">
    <div class="row header-home no-gutters" <?php echo 'style="background-image:url(' . get_header_image() . ');' . 'background-repeat: no-repeat;
     background-position: center; background-size: cover;min-height:100vh">'; ?>
    </div>
</header>

Enregistrer les images par défaut ((apparemment, c'est nécessaire, AUSSI functions.php)

register_default_headers( array(
    'headerimage' => array(
        'url'           => '%s/images/image1.jpg',
        'thumbnail_url' => '%s/images/image1.jpg',
        'description'   => __( 'headerimage', 'DesignitMultistore' )
        ),
    ) );
0
CompactCode

Pour les personnes ayant encore des problèmes, le code complet dont vous avez besoin est le suivant:

dans votre functions.php:

register_default_headers( array(
    'default-image' => array(
        'url'           => get_template_directory_uri() . '/img/header.jpg',
        'thumbnail_url' => get_template_directory_uri() . '/img/header.jpg',
        'description'   => __( 'Default Header Image', 'textdomain' )
    ),
) );

function yourtheme_custom_header_setup() {
    $args = array(
        'default-image'      => get_template_directory_uri() . '/img/header.jpg',
        'default-text-color' => '000',
        'width'              => 1200,
        'height'             => 720,
        'flex-width'         => true,
        'flex-height'        => true,
    );
    add_theme_support( 'custom-header', $args );
}
add_action( 'after_setup_theme', 'yourtheme_custom_header_setup' );

Dans votre fichier de modèle (probally header.php):

echo(has_header_image() ? get_header_image() : get_theme_support( 'custom-header', 'default-image' ));
0
Eric van Eldik