Suppression de http:// de esc url() pour le code de personnalisation wordpress

Publié par Jean-Michel le

J’essaie de comprendre cela depuis quelques jours maintenant et j’ai maintenant compris que j’avais besoin d’aide.

Je n’ai jamais travaillé avec le personnalisateur wordpress, mais j’ai récemment été intéressé par l’ajout de champs de texte supplémentaires et de téléchargements d’images à mes thèmes que je personnalise (je trouve cela assez difficile car non seulement j’ai besoin d’apprendre le code du personnalisateur, mais ensuite doivent également comprendre comment l’ajouter à un thème de genèse – sur lequel il n’y a pas trop d’articles).

J’essaie de supprimer le « http:// » de mon URL dans ma zone de texte « Email Link » dans un nouveau panneau que j’ai créé.

J’ai la zone de texte de l’e-mail, puis le lien où je l’ai ensuite ajouté pour y accéder (et le téléphone et éventuellement une adresse sur la route).

entrez la description de l'image ici

J’ai donc créé le panneau, puis les zones de texte. Ceci est la zone de texte de mon lien e-mail (je n’ai pas tout inclus car il y a beaucoup d’autres éléments et je ne suis pas sûr que cela doive être affiché car c’est juste le lien sur lequel j’ai besoin d’aide):

  // EMAIL
    $wp_customize->add_setting( 'header_utility_right_email_block', array(
         'default'           => '',
         'sanitize_callback' => 'sanitize_text'
    ) );
    $wp_customize->add_control( new WP_Customize_Control(
        $wp_customize,
        'header_utility_right_email_block',
            array(
                'label'    => __( 'Email', 'CHILD_THEME_NAME' ),
                'section'  => 'utility_bar_right',
                'settings' => 'header_utility_right_email_block',
                'type'     => 'text'
            )
        )
    );

    // EMAIL LINK
        $wp_customize->add_setting( 'header_utility_right_email_block_link', array(
             'default'           => '',
             'sanitize_callback' => 'sanitize_text'
        ) );
        $wp_customize->add_control( new WP_Customize_Control(
            $wp_customize,
            'header_utility_right_email_block_link',
                array(
                    'label'    => __( 'Email Link', 'CHILD_THEME_NAME' ),
                    'section'  => 'utility_bar_right',
                    'settings' => 'header_utility_right_email_block_link',
                    'type'     => 'text'
                )
            )
        );

alors j’ai mon téléphone et il est dans une fonction (pour genesis) plus beaucoup plus mais je vais juste vous donner l’appel individuel de celui-ci pour l’e-mail et le lien e-mail :

 if( get_theme_mod( 'header_utility_right_email_block') ) : ?>
        <div class='theme-utility-bar-right-email'>
            <a href="mailto:<?php echo esc_url( get_theme_mod( 'header_utility_right_email_block_link', '$protocols = null' ) ); ?>"><?php echo get_theme_mod( 'header_utility_right_email_block');?></a>
        </div>
        <?php endif; 

Tout fonctionne très bien ! Autre que le lien lui-même pour l’e-mail renvoie un mailto:http://myemail@email.com au lieu de mailto:myemail@email.com .

Existe-t-il un moyen de supprimer le http://? J’ai cherché quelques articles et trouvé l’ajout $protocol mais je ne sais pas comment l’utiliser et si c’est même la bonne façon de procéder. Je ne suis pas vraiment un programmeur, j’ai donc besoin d’aide pour le premier saut sur les fonctions et c’est nul, mais à partir de là, je comprends généralement.

Toute aide pour que ce « http:// » ne soit pas par défaut serait formidable !

Solution n°1 trouvée

Parce qu’un e-mail n’est pas une URL ; vous devez ajouter le protocole à la valeur que vous transmettez àesc_url :

<a href="<?php echo esc_url( 'mailto:' . get_theme_mod( 'header_utility_right_email_block_link' ) ) ?>" ...

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 *