web-dev-qa-db-fra.com

personnaliser_enregister avec plusieurs contrôles/paramètres - comment obtenir des valeurs?

Débutant PHP ici, et j'ai ceci sur mon functions.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' );

Comme vous pouvez le constater, il s’agit d’une copie flagrante de l’exemple figurant dans le WordPress Codex .

Maintenant, cela fonctionne parfaitement. Lorsque je vais à Apparence -> Personnaliser, je vois la section du pseudo social et peux ajouter et enregistrer dans une zone de texte et effectuer une sélection à partir de la sélection.

Mon problème est maintenant, je n'arrive pas à saisir les valeurs à utiliser dans les modèles. J'ai d'autres sections de personnalisation avec 1 paramètre dans le personnaliseur (c'est-à-dire l'image du logo) et elles fonctionnent parfaitement, mais lorsque j'utilise le même get_theme_mod () pour les paramètres "sociaux", rien ne se produit.

<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>

Je n'ai trouvé aucun élément utile dans la documentation, alors quelle est la bonne façon de saisir ces valeurs?

3
vm7488

Votre code est bon sauf dans add_setting. Vous avez affecté option pour le paramètre type. Cela permettra d'économiser une option distincte pour chaque champ. Si vous utilisez theme_mod, cela résoudra votre problème.

'type' => 'theme_mod',

4
Nilambar