FEATURE Handling a secondary logo

This commit is contained in:
Nonimart 2025-09-30 16:48:27 +02:00
parent 5b9dbed556
commit 402f5e3350

View File

@ -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 '<img src="' . esc_url($secondary_logo_url) . '"' . $attr_string . '>';
}
}
/**
* 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());
}