carhop__carhop-theme__DEV/includes/logos.php
Antoine M 946e3d3cdf
All checks were successful
continuous-integration/drone/push Build is passing
FEATURE Big menu refactoring to match dynamlique menu
2025-12-09 09:32:48 +01:00

157 lines
4.4 KiB
PHP
Executable File

<?php
/** ------------------------------
ENABLE SVG
------------------------------*/
function carhop_allow_svg_upload($mimes)
{
// Autoriser SVG pour tous les utilisateurs connectés
$mimes['svg'] = 'image/svg+xml';
$mimes['svgz'] = 'image/svg+xml';
return $mimes;
}
add_filter('upload_mimes', 'carhop_allow_svg_upload', 10, 1);
// Vérifier les permissions utilisateur pour SVG
function carhop_check_svg_permissions($file)
{
if ($file['type'] === 'image/svg+xml') {
// Autoriser pour les administrateurs et éditeurs
if (current_user_can('upload_files')) {
return $file;
} else {
$file['error'] = 'Vous n\'avez pas les permissions pour uploader des fichiers SVG.';
}
}
return $file;
}
add_filter('wp_handle_upload_prefilter', 'carhop_check_svg_permissions');
// Debug: afficher les types MIME autorisés
// write_log(get_allowed_mime_types());
// Solution alternative : utiliser un hook plus tôt
function carhop_early_svg_support()
{
add_filter('upload_mimes', function ($mimes) {
$mimes['svg'] = 'image/svg+xml';
$mimes['svgz'] = 'image/svg+xml';
return $mimes;
}, 1);
}
add_action('init', 'carhop_early_svg_support', 1);
// Désactiver la vérification stricte des types MIME pour SVG
function carhop_disable_mime_check($data, $file, $filename, $mimes)
{
if (pathinfo($filename, PATHINFO_EXTENSION) === 'svg') {
$data['ext'] = 'svg';
$data['type'] = 'image/svg+xml';
$data['proper_filename'] = $filename;
}
return $data;
}
add_filter('wp_check_filetype_and_ext', 'carhop_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 carhop_customize_register($wp_customize)
{
// Ajouter le logo alternatif dans la section "Identité du site" existante
$wp_customize->add_setting('carhop_logo_secondary', array(
'default' => '',
'sanitize_callback' => 'esc_url_raw',
'transport' => 'refresh',
));
$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'carhop_logo_secondary', array(
'label' => __('Logo alternatif (Au survol)', 'carhop'),
'section' => 'title_tagline', // Section native "Identité du site"
'settings' => 'carhop_logo_secondary',
'description' => __('Logo alternatif utilisé au survol du logo principal', 'carhop'),
'priority' => 9, // Juste après le logo principal
)));
}
add_action('customize_register', 'carhop_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 carhop_get_secondary_logo_url()
{
return get_theme_mod('carhop_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 carhop_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 carhop_the_secondary_logo($size = 'full', $attr = array())
{
echo get_secondary_logo($size, $attr);
}
/**
* Vérifier si un logo secondaire est configuré
* @return bool
*/
function carhop_has_secondary_logo()
{
return !empty(get_secondary_logo_url());
}