首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何覆盖核心is_ssl()函数?

如何覆盖核心is_ssl()函数?
EN

WordPress Development用户
提问于 2013-02-05 15:45:50
回答 3查看 2.6K关注 0票数 4

我希望通过一个主题或插件覆盖functions.php中的一个函数。特别是is_ssl(),它没有任何过滤器或操作钩子。显然,更新functions.php本身很容易,但这将给升级和兼容性留下问题。怎么能做到这一点。

编辑:目标是覆盖is_ssl()函数,以便在请求头中设置特定标志时返回true。

有可能用覆盖函数吗?

EN

回答 3

WordPress Development用户

发布于 2013-02-05 15:56:11

一旦定义了函数,就不能重写它。这是纯PHP。有些函数被包装在一个条件中,这样您就可以在这里作弊--看看pluggable.php。否则,你就是做不到。你会犯一个致命的错误。

解决这个问题的最好办法可能是一个儿童主题,但如果没有很多细节,我就无法说出如何解决这个问题,即便如此,成功也取决于你的“父母”主题的合作程度。它可能是写在一个方式,使这对你非常困难。

票数 1
EN

WordPress Development用户

发布于 2015-02-18 18:42:23

没有简单的方法来做this...or,至少不再有广泛采用的方式了。名称空间在这里不会真正起作用,每一个更新都会删除一个硬编辑,除非它是在一个配置(混乱的方式做它)。vQmod是一个角度,但从来没有尝试过与Wordpress。

插件是在该函数之前执行的,所以如果您需要它的代理/平衡器/SSL支持,那么您可以将$_SERVER['HTTPS']欺骗为'on'。如果您正在处理多个标头触发器,则数组合并在这里可能会很好。

请记住,如果您要将其作为插件,请在文件夹和脚本(S)前面加上前缀,以便它们在文件列表的顶部进行排序。示例类似于在-my-router.php文件夹中找到的-my-router。该破折号将排序插件顶部,这应该是第一个在链。这是必要的,以防其他插件调用is_ssl()或类似于wp_enqueue_style()的东西,然后您的插件才会减轻它。

票数 0
EN

WordPress Development用户

发布于 2020-08-15 01:15:31

经过大量的研究,我相信这是没有好的答案的。

最好的解决方法是尽早修改$_SERVER,但并不是每个环境都允许您这样做。不幸的是,一个直接的黑客是唯一的方法来做到这一点。

这在混淆ssl原点的负载平衡器后面是必要的。使用Active Directory身份验证在Azure中实现Wordpress (它强制使用ssl,但将所有结果发送到端口80,而不是ssl),我的解决方案是修改is_ssl以始终返回true。

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/84611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档