簡體   English   中英

如何在Wordpress中覆蓋某些功能

[英]How to override some function in wordpress

我在IIS上安裝了wordpress設置,並且將其重寫。 因此,我在wp_includes/canonical.php文件中的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更新?

WordPress具有掛鈎概念來更改核心功能和流程。 所有鈎子都是通過apply_filtersdo_action定義的。 鈎子在過濾器apply_filters和action- do_action是不同的。

您應該閱讀以下內容: https : //codex.wordpress.org/Plugin_API/Hooks

永遠不要更改核心,因為維護,功能等等。 在您的示例函數中redirect_canonical也具有鈎子,例如redirect_canonicalDoku )( 在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 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM