咨询:如何让WordPress的get_option('siteurl')输出HTTPS前缀?
解决WordPress评论表单HTTPS URL问题
以下是几种可行的修改方案,按需选择:
方案1:直接修改主题表单代码(最直接)
把原代码中的get_option('siteurl')替换为site_url()并指定HTTPS协议,强制生成带HTTPS前缀的地址:
<form action="<?php echo site_url('/wp-comments-post.php', 'https'); ?>" method="post" id="commentform">
site_url()是WordPress官方推荐的URL生成函数,第二个参数传入'https'可以忽略后台设置,直接输出HTTPS地址。
方案2:通过过滤函数修改URL输出(无需改动主题模板)
如果不想修改主题文件,可以在当前主题的functions.php中添加以下代码,自动将get_option('siteurl')返回的HTTP地址替换为HTTPS:
add_filter('option_siteurl', function($url) { return str_replace('http://', 'https://', $url); });
该函数会全局拦截siteurl选项的返回值,替换协议前缀,适用于多个地方需要修改URL协议的场景。
方案3:在wp-config.php中配置HTTPS站点地址(根治方案)
直接在wp-config.php中定义站点的HTTPS地址,这是WordPress官方推荐的配置方式,能确保所有系统生成的URL都使用HTTPS:
define('WP_HOME', 'https://你的实际域名'); define('WP_SITEURL', 'https://你的实际域名');
替换你的实际域名为你网站的真实域名,配置后无需修改主题或添加过滤函数,一劳永逸解决混合内容问题。
问题原因说明
出现浏览器安全错误是因为get_option('siteurl')返回的是你WordPress后台「设置-常规」中的站点地址,如果该地址仍为HTTP,即使Nginx做了HTTP转HTTPS的跳转,表单提交的目标地址还是HTTP,会触发混合内容安全限制。
内容的提问来源于stack exchange,提问作者Alexey Starinsky
相关产品推荐
相关产品推荐

