personalizar_registrar con múltiples controles / configuraciones: ¿cómo obtener valores?

2

PHP novato aquí, y tengo esto en mis funciones.php

function mcs_social($wp_customize){

    $wp_customize->add_section('mcs_social_handle', array(
        'title'    => __('Social Network Handles', 'mcs'),
        'description' => 'i.e., Acme Company\'s Facebook is https://facebook.com/acmecompany then enter "acmecompany"',
        'priority' => 70,
    ));

    //  =============================
    //  = Facebook                  =
    //  =============================
    $wp_customize->add_setting('mcs_fb_op', array(
        'default'        => '',
        'capability'     => 'edit_theme_options',
        'type'           => 'option',

    ));

    $wp_customize->add_control('mcs_fb', array(
        'label'      => __('Facebook Handle', 'mcs'),
        'section'    => 'mcs_social_handle',
        'settings'   => 'mcs_fb_op',
    ));

        //  =============================
    //  = Twitter                  =
    //  =============================
    $wp_customize->add_setting('mcs_tw_op', array(
        'default'        => '',
        'capability'     => 'edit_theme_options',
        'type'           => 'option',

    ));

    $wp_customize->add_control('mcs_tw', array(
        'label'      => __('Twitter Handle', 'mcs'),
        'section'    => 'mcs_social_handle',
        'settings'   => 'mcs_tw_op',
    ));

    //  =============================
    //  = RSS                       =
    //  =============================
     $wp_customize->add_setting('mcs_rs_op', array(
        'default'        => 'rss2_url',
        'capability'     => 'edit_theme_options',
        'type'           => 'option',

    ));
    $wp_customize->add_control( 'mcs_rs', array(
        'settings' => 'mcs_rs_op',
        'label'   => 'RSS Feed',
        'section' => 'mcs_social_handle',
        'type'    => 'select',
                'choices'       => array(
                    'rdf_url'       => 'RDF/RSS 1.0 feed',
                    'rss2_url'  => 'RSS 2.0 feed',
                    'atom_url'  => 'Atom feed',
        ),
    ));
}

//add
add_action( 'customize_register', 'mcs_social' );

Como puede ver, es una copia evidente de la muestra en WordPress Codex .

Ahora, eso funciona perfectamente. Cuando voy a la aparición - > personalizar, veo la sección de control social y puedo agregar y guardar en el cuadro de texto y seleccionar de la selección.

Mi problema ahora es que parece que no puedo agarrar los valores para usar en las plantillas. Tengo otras secciones de personalizador con 1 configuración en el personalizador (es decir, la imagen del logotipo) y funcionan bien, pero cuando uso el mismo método get_theme_mod () para la configuración "social" no aparece nada.

<div class="blue-social-box">
          <h5>Follow us on:</h5>
          <ul>
          <?php if ( get_theme_mod( 'mcs_fb_op' ) ) : ?>
            <li>
              <figure><a href="https://www.facebook.com/<?php echo esc_url( get_theme_mod( 'mcs_fb_op' ) ); ?>" target="_blank"><img src="<?php echo $fbImg; ?>" /></a></figure>
              <label><a href="https://www.facebook.com/<?php echo esc_url( get_theme_mod( 'mcs_fb_op' ) ); ?>" target="_blank">Facebook</a></label>
            </li>
          <?php elseif ( get_theme_mod( 'mcs_fb_op' ) ) : ?>
                        <li>
              <figure><a href="https://www.twitter.com/<?php echo esc_url( get_theme_mod( 'mcs_tw_op' ) ); ?>" target="_blank"><img src="<?php echo $twImg; ?>" /></a></figure>
              <label><a href="https://www.twitter.com/<?php echo esc_url( get_theme_mod( 'mcs_tw_op' ) ); ?>" target="_blank">Twitter</a></label>
            </li>
          <?php 
                    elseif ( get_theme_mod( 'mcs_rs_op' ) ) : 
                    $rssType = esc_url(get_theme_mod('mcs_rs_op'));
                        ?>
                        <li>
              <figure><a href="<?php bloginfo($rssType); ?>" target="_blank"><img src="<?php echo $rsImg; ?>" /></a></figure>
              <label><a href="<?php bloginfo($rssType); ?>" target="_blank">RSS Feed</a></label>
            </li>
                    <?php else : //Nothing ?>
          <?php endif; ?>
          </ul>
        </div>

No encontré nada útil en la documentación, así que, ¿cuál es la forma correcta de capturar estos valores?

    
pregunta vm7488 01.05.2015 - 04:38

1 respuesta

4

Su código es bueno, excepto en add_setting . Ha asignado option para el parámetro type . Se guardará la opción por separado para cada campo. Si usa theme_mod , resolverá su problema.

'type' => 'theme_mod',

    
respondido por el Nilambar 01.05.2015 - 05:57

Lea otras preguntas en las etiquetas