156 lines
4.4 KiB
PHP
Executable File
156 lines
4.4 KiB
PHP
Executable File
<?php
|
|
|
|
/** ------------------------------
|
|
ENABLE SVG
|
|
------------------------------*/
|
|
|
|
function dynamiques_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', 'dynamiques_allow_svg_upload', 10, 1);
|
|
|
|
// Vérifier les permissions utilisateur pour SVG
|
|
function dynamiques_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', 'dynamiques_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 dynamiques_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', 'dynamiques_early_svg_support', 1);
|
|
|
|
// Désactiver la vérification stricte des types MIME pour SVG
|
|
function dynamiques_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', '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());
|
|
}
|