get_theme_mod siempre devuelve el valor predeterminado

2

Estoy trabajando en el sitio web de un cliente y estoy tratando de agregar enlaces de redes sociales al personalizador, que luego se pueden llamar a través de get_theme_mod , a través de un código corto. Sin embargo, cuando intento llamarlos, siempre obtengo el valor predeterminado.

Cuando verifiqué get_theme_mods , no parecían estar definidos en absoluto ... Sin embargo, en el personalizador del tema, los campos están ahí.

Intenté usar las siguientes preguntas, pero eso no me ayudó:
get_theme_mod (); no devuelve nada
enlace

El código del personalizador agregado es

// 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]',
));

Y esta es la función de código abreviado:

/**
 * 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' );
}
    
pregunta MisterBla 17.05.2015 - 08:44

1 respuesta

4

En el código del personalizador, debe hacer lo siguiente después de que el cambio funcione. No necesita ta_pluton_social_link[facebook] like array en Control. Verifique el siguiente ejemplo y modifíquelo en consecuencia a otros campos también.

  $wp_customize->add_control('facebook', array(
      'label'      => __('Facebook URL', 'ta_pluton'),
      'section'    => 'ta_pluton_social_links',
      'settings'   => 'ta_pluton_social_link[facebook]',
  ));

Para obtener la URL puede usar get_theme_mod . Ver ejemplo a continuación. El siguiente fragmento de código muestra cómo obtener la URL de Facebook.

$ta_pluton_social_link = get_theme_mod( 'ta_pluton_social_link' );
$facebook_url = $ta_pluton_social_link['facebook'];
    
respondido por el Nilambar 17.05.2015 - 11:03

Lea otras preguntas en las etiquetas