From 402f5e3350896bbeaa656a9e577b7b61f1aaa8cf Mon Sep 17 00:00:00 2001 From: Nonimart Date: Tue, 30 Sep 2025 16:48:27 +0200 Subject: [PATCH] FEATURE Handling a secondary logo --- includes/logos.php | 100 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/includes/logos.php b/includes/logos.php index c133339..66f5c8c 100755 --- a/includes/logos.php +++ b/includes/logos.php @@ -53,3 +53,103 @@ function dynamiques_disable_mime_check($data, $file, $filename, $mimes) return $data; } add_filter('wp_check_filetype_and_ext', 'dynamiques_disable_mime_check', 10, 4); + + +/** ------------------------------ + LOGO ALTERNATIF CUSTOMIZER +------------------------------*/ + +/** + * Ajouter l'option de logo alternatif dans le customizer + * (Le logo principal est géré nativement par WordPress dans "Identité du site") + */ +function dynamiques_customize_register($wp_customize) +{ + // Ajouter le logo alternatif dans la section "Identité du site" existante + $wp_customize->add_setting('dynamiques_logo_secondary', array( + 'default' => '', + 'sanitize_callback' => 'esc_url_raw', + 'transport' => 'refresh', + )); + + $wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'dynamiques_logo_secondary', array( + 'label' => __('Logo alternatif (Au survol)', 'dynamiques'), + 'section' => 'title_tagline', // Section native "Identité du site" + 'settings' => 'dynamiques_logo_secondary', + 'description' => __('Logo alternatif utilisé au survol du logo principal', 'dynamiques'), + 'priority' => 9, // Juste après le logo principal + ))); +} +add_action('customize_register', 'dynamiques_customize_register'); + + +/** ------------------------------ + LOGO SECONDAIRE UTILITIES +------------------------------*/ + +/** + * Récupérer l'URL du logo secondaire + * @return string|false L'URL du logo secondaire ou false si non configuré + */ +function get_secondary_logo_url() +{ + return get_theme_mod('dynamiques_logo_secondary', false); +} + +/** + * Récupérer le HTML complet du logo secondaire + * @param string $size Taille de l'image (par défaut 'full') + * @param array $attr Attributs HTML supplémentaires + * @return string|false Le HTML du logo ou false si non configuré + */ +function get_secondary_logo($size = 'full', $attr = array()) +{ + $secondary_logo_url = get_secondary_logo_url(); + + if (!$secondary_logo_url) { + return false; + } + + // Attributs par défaut + $default_attr = array( + 'alt' => get_bloginfo('name') . ' - Logo alternatif', + 'class' => 'secondary-logo' + ); + + // Fusionner avec les attributs personnalisés + $attr = array_merge($default_attr, $attr); + + // Essayer de récupérer l'ID de l'attachement + $secondary_logo_id = attachment_url_to_postid($secondary_logo_url); + + if ($secondary_logo_id) { + // Utiliser wp_get_attachment_image si on a l'ID + return wp_get_attachment_image($secondary_logo_id, $size, false, $attr); + } else { + // Fallback : créer la balise img manuellement + $attr_string = ''; + foreach ($attr as $key => $value) { + $attr_string .= ' ' . $key . '="' . esc_attr($value) . '"'; + } + return ''; + } +} + +/** + * Afficher le logo secondaire directement + * @param string $size Taille de l'image + * @param array $attr Attributs HTML supplémentaires + */ +function the_secondary_logo($size = 'full', $attr = array()) +{ + echo get_secondary_logo($size, $attr); +} + +/** + * Vérifier si un logo secondaire est configuré + * @return bool + */ +function has_secondary_logo() +{ + return !empty(get_secondary_logo_url()); +}