esc_url( ) won't use https

时间:2015-06-10 作者:jimmyplaysdrums

页面上的代码如下所示:

if ( ! empty( $image ) ) : ?>
<div class="headshot">
    <img src="<?php echo esc_url( $image ); ?>" alt="Photo of <?php echo esc_attr( $author_name ); ?>"/>
</div>
但是,当图像显示在页面上时,它使用的是http,而不是像站点的其他部分那样使用https。

何时转到WP codex 要查看esc\\u url的用法,它在用法中显示了这一点,但我不知道用于将协议强制为https的正确语法:

<?php esc_url( $url, $protocols, $_context ); ?>

4 个回复
SO网友:Serpentsoft

esc\\u url从不将url强制为协议它只是检查并转义传递的url中的无效字符,$protocols变量是可接受(白名单)协议的数组,不用于强制目标url。

// Forcing URL to https instead of http

$YOUR_URL = esc_url($YOUR_URL);

if( \'http\' == parse_url($YOUR_URL, PHP_URL_SCHEME) ){
    $NEW_URL = str_replace(\'http://\', \'https://\', $YOUR_URL); 
}

SO网友:s_ha_dum

这个$protocols 参数接受数组,因此:

$protocols = array(
  \'https\'
);
但是“https”被列为默认值,所以我不确定这是问题所在。我猜是有一个过滤器干扰。。。clean_url 例如,或kses_allowed_protocols

SO网友:Sajan

旧线程,但我今天有类似的问题。如果您安装了SSL不安全的内容修复程序插件,则在安装后继续设置,并选择“全部捕获”并保存。

这为我解决了这个问题。确保事先备份数据库和网站,以防出现问题。

SO网友:MediaFormat

您正在寻找的功能(但直到2015年12月才实现)是set_url_scheme

set_url_scheme( $url, \'https\' ) )

在内部,该函数检查is\\u ssl是否为true,仅当传递的url具有方案时,才会设置url方案。

结束

相关推荐

WooCommerce-使用WooCommerce.php时不显示产品

奇怪的情况-我安装了WooCommerce,默认情况下,/shop,/cart等页面工作正常。但是,格式已经关闭,所以我尝试按照指示制作一个“woocommerce.php”模板。这包含对“woocommerce\\u content()的调用”例如,现在当我加载/购物页面时,除了产品之外,所有内容都会显示出来-它们不在那里。没有woocommerce。php模板,产品显示刚刚好。我有什么遗漏吗-吉姆