如何覆盖wordpress

时间:2018-05-28 12:51:56

标签: php wordpress

我在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更新?

1 个答案:

答案 0 :(得分:1)

WordPress有钩子概念来改变核心功能和过程。所有挂钩都是通过apply_filtersdo_action定义的。过滤器apply_filters和操作 - do_action中的挂钩不同。

您应该阅读:https://codex.wordpress.org/Plugin_API/Hooks

你永远不应该改变核心,因为维护,功能等等。在您的示例中,函数redirect_canonical也有钩子,例如redirect_canonicalDoku)(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 );