正在从WordPress定制器代码的Esc url()中删除http://

时间:2016-05-26 作者:kia4567

几天来,我一直在努力解决这个问题,现在我终于明白我需要帮助。

我从来没有使用过wordpress自定义程序,但最近对向我自定义的主题添加额外的文本字段和图像上传很感兴趣(我发现这很困难,因为我不仅需要学习自定义程序的代码,还需要弄清楚如何将其添加到genesis主题中,这方面的文章并不多)。

我正在尝试从我制作的新面板中的“电子邮件链接”文本框中的url中删除“http://”。

我有一个电子邮件文本框,然后是一个链接,我在其中添加了它以链接到它(还有电话,可能还有一个沿途的地址)。

enter image description here

所以我创建了面板,然后是文本框。这是我的电子邮件链接文本框(我还没有包括全部内容,因为还有许多其他内容,我不确定是否需要显示,因为这只是我需要帮助的链接):

  // 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\'
                )
            )
        );
然后,我有我的手机,它有一个功能(用于genesis)以及更多功能,但我只给你一个单独的呼叫,用于电子邮件和电子邮件链接:

 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; 
一切都很好!除了电子邮件的链接本身之外,还返回mailto:http://[email protected] 而不是mailto:[email protected].

有没有办法删除http://?我找了一些文章,找到了$协议添加项,但不确定如何使用它,以及它是否是正确的方法。我并不是一个真正的程序员,所以在函数的第一次跳转时需要帮助,而且很差劲,但之后通常会从那里掌握窍门。

关于使这个“http://”不是默认值的任何帮助都将非常有用!

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

因为电子邮件不是URL;您需要将协议前置到传递给的值esc_url:

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

相关推荐