我正在努力消除我网站上的“混合内容”,并且在网站的每个区域都这样做了,除了一个区域。
通过主题定制器上传的任何图像都不是协议相关的,也不是https,通过定制器上传的所有图像都显示为“http://”。
自定义程序使用Media Gallery上载程序,但其操作方式似乎不同。如果我将图像上载到媒体库(无自定义程序),将其放置到页面中,WP会知道是否在http和https之间切换,不过,当通过主题自定义程序功能尝试切换时:
$wp_customize->add_setting(\'slide_img_upload_one\');
$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, \'slide_img_upload_one\', array(
\'label\' => __(\'Upload first image:\', \'example_theme\'),
\'section\' => \'carousel_slide_section\',
\'settings\' => \'slide_img_upload_one\',
\'description\' => \'Upload your first slider image here.\'
)));
我拿不到
WP_Customize_Image_Control();
输出“https”或(最佳方案)协议相关
//
指向符合SSL的映像的url。
一些需要注意的事情。我不会在我的网站上强制SSL,所以在设置->常规;我不会改变http协议的url。
我也不是在寻找一种使用方法。htaccess强制执行此操作。
总而言之,必须有一种方法通过主题定制器上传的图像与协议相关,但我需要一些帮助来解决这个问题。我目前正在运行WP 4.6(是的,我知道我有点落后)。
希望其他人在R&;事实证明,在尝试解决像WordPress主题定制器func这样的特定问题时,D是无用的。
提前感谢您的帮助、想法、头脑风暴。。。欢迎所有想法!
我正在使用以下命令调用页面上的customizer函数:
<a href="<?php echo esc_url(get_theme_mod(\'slide_one_link\')); ?>"><img src="<?php echo esc_url( get_theme_mod( \'slide_img_upload_one\' ) ); ?>" alt="<?php echo get_theme_mod( \'slide_title_1\' ); ?>" /></a>
仅供参考:我在这里尝试了解决方案,但没有成功:
Failed Attempt
最合适的回答,由SO网友:David Lee 整理而成
我认为更简单的解决方案是创建自己的函数:
function get_theme_mod_img($mod_name){
return str_replace(array(\'http:\', \'https:\'), \'\', get_theme_mod($mod_name));
}
那就用它吧:
<a href="<?php echo esc_url(get_theme_mod(\'slide_one_link\')); ?>"><img src="<?php echo esc_url( get_theme_mod_img( \'slide_img_upload_one\' ) ); ?>" alt="<?php echo get_theme_mod( \'slide_title_1\' ); ?>" /></a>
如您所见,还有另一种涉及过滤器的解决方案
here 和
here 过滤器的应用方式如下:
return apply_filters( "theme_mod_{$name}", $mods[$name] );
$mods[ $name ] = apply_filters( "pre_set_theme_mod_{$name}", $value, $old_value );
但您必须为每个图像设置添加一个过滤器:
add_filter(\'theme_mod_my-setting-image-name\', \'function_that_strips_protocol\');
这未经测试,我认为它还将涉及定制预览逻辑。