WordPress : get_theme_mod renvoie toujours la valeur par défaut

Publié par Jean-Michel le

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'];

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *