我在IIS上安装了wordpress,然后重写了。因此我在wp_includes/canonical.php
文件中的wordpress中发现了一些错误。
我认为,当我更新我的wordpress时,我的所有更改都会消失。我等不及wordpress修复此问题(我甚至不知道它是否是bug或如何报告)因为“bug”导致我的主页进入重定向循环。
我在该文件中的redirect_canonical
函数中进行了一些更改,特别是此更改:
function redirect_canonical( $requested_url = null, $do_redirect = true ) {
///some other code
if ( ! $requested_url && isset( $_SERVER['HTTP_HOST'] ) ) {
// build the URL in the address bar
$requested_url = is_ssl() ? 'https://' : 'http://';
//$requested_url=$_SERVER['HTTP_HOST'] //I deleted this because my URL is rewritten
$asParts = parse_url( $sURL ); // PHP function
$requested_url .= $asParts['host'] ;
$requested_url .= $_SERVER['REQUEST_URI'];
如何使此更改抵制wordpress更新?
答案 0 :(得分:1)
WordPress有钩子概念来改变核心功能和过程。所有挂钩都是通过apply_filters
和do_action
定义的。过滤器apply_filters
和操作 - do_action
中的挂钩不同。
您应该阅读:https://codex.wordpress.org/Plugin_API/Hooks
你永远不应该改变核心,因为维护,功能等等。在您的示例中,函数redirect_canonical
也有钩子,例如redirect_canonical
(Doku)(in source)。然而,它提供了更多,它取决于你的目标,要求。
作为通过过滤器钩子更改函数返回值的小例子,请参阅下面的代码示例。
add_filter( 'redirect_canonical', function ( $redirect_url, $requested_url ) {
// I don't know what is the var $sURL in your code.
$requested_url = parse_url( $sURL );
// Leave here the logic to change the result for $redirect_url.
return $redirect_url;
}, 10, 2 );