WordPress : get_theme_mod renvoie toujours la valeur par défaut
Je travaille sur le site Web d’un client et j’essaie d’ajouter des liens de médias sociaux au personnalisateur, qui peuvent ensuite être appelés via get_theme_mod
, via un shortcode. Cependant, lorsque j’essaie de les appeler, j’obtiens toujours la valeur par défaut.
Quand j’ai vérifié get_theme_mods
, ils ne semblaient pas du tout définis… Cependant, dans le personnalisateur de thème, les champs sont là.
J’ai essayé d’utiliser les questions suivantes, mais cela ne m’a pas aidé :
get_theme_mod(); ne renvoie rien
https://wordpress.stackexchange.com/questions/144544/get-theme-mod-return-a-blank-value-instead-of-saved-value
Le code de personnalisation ajouté est
// Add social links setting
$wp_customize->add_section( 'ta_pluton_social_links', array(
'title' => __( 'Social Media Links', 'ta_pluton' ),
'description' => __( 'Links for the Social Media buttons on the home page.', 'ta_pluton' ),
'priority' => 10
) );
$social_links_default_settings = array(
'default' => '#',
);
$wp_customize->add_setting('ta_pluton_social_link[facebook]', $social_links_default_settings);
$wp_customize->add_setting('ta_pluton_social_link[twitter]', $social_links_default_settings);
$wp_customize->add_setting('ta_pluton_social_link[googleplus]', $social_links_default_settings);
$wp_customize->add_setting('ta_pluton_social_link[tumblr]', $social_links_default_settings);
$wp_customize->add_setting('ta_pluton_social_link[youtube]', $social_links_default_settings);
$wp_customize->add_control('ta_pluton_social_link[facebook]', array(
'label' => __('Facebook URL', 'ta_pluton'),
'section' => 'ta_pluton_social_links',
'settings' => 'ta_pluton_social_link[facebook]',
));
$wp_customize->add_control('ta_pluton_social_link[twitter]', array(
'label' => __('Twitter URL', 'ta_pluton'),
'section' => 'ta_pluton_social_links',
'settings' => 'ta_pluton_social_link[twitter]',
));
$wp_customize->add_control('ta_pluton_social_link[googleplus]', array(
'label' => __('Google+ URL', 'ta_pluton'),
'section' => 'ta_pluton_social_links',
'settings' => 'ta_pluton_social_link[googleplus]',
));
$wp_customize->add_control('ta_pluton_social_link[tumblr]', array(
'label' => __('Tumblr URL', 'ta_pluton'),
'section' => 'ta_pluton_social_links',
'settings' => 'ta_pluton_social_link[tumblr]',
));
$wp_customize->add_control('ta_pluton_social_link[youtube]', array(
'label' => __('YouTube URL', 'ta_pluton'),
'section' => 'ta_pluton_social_links',
'settings' => 'ta_pluton_social_link[youtube]',
));
Et voici la fonction shortcode :
/**
* Add a social media link shortcode
*/
if( !function_exists( 'ta_pluton_social_media_shortcode' ) ) {
function ta_pluton_social_media_shortcode( $atts ) {
$attributes = shortcode_atts( array(
'default' => '#'
), $atts );
if ( !array_key_exists( 'media' ) ) {
trigger_error('The social_media_link shortcode requires a medium to be selector, eg: [social_media_link media="facebook"]' );
}
return get_theme_mod( 'ta_pluton_social_link[' . strtolower( $attributes['media'] ) . ']', $attributes['default'] );
}
add_shortcode( 'social_media_link', 'ta_pluton_social_media_shortcode' );
}
Solution n°1 trouvée
Dans le code Customizer, vous devez effectuer les modifications suivantes pour fonctionner. Vous n’avez pas besoin ta_pluton_social_link[facebook]
d’un tableau comme dans Control. Vérifiez l’exemple suivant et modifiez également les autres champs en conséquence.
$wp_customize->add_control('facebook', array(
'label' => __('Facebook URL', 'ta_pluton'),
'section' => 'ta_pluton_social_links',
'settings' => 'ta_pluton_social_link[facebook]',
));
Pour récupérer l’URL, vous pouvez utiliser get_theme_mod
. Vérifiez l’exemple ci-dessous. L’extrait suivant montre comment récupérer l’URL de Facebook.
$ta_pluton_social_link = get_theme_mod( 'ta_pluton_social_link' );
$facebook_url = $ta_pluton_social_link['facebook'];
0 commentaire