回家路徑()

get_home_path()ABSTPATH 之間的重要區別

如果你在子資料夾中安裝了 WordPress,請記住 ABSPATHget_home_path() 之間的區別。

get_home_path() 函式將始終返回沒有子資料夾的路徑 :

這就是它與 ABSPATH 的不同之處,ABSPATH 將返回不同的值:

ABSPATH 首先在 wp-load.php 中定義,它將位於/var/www/htdocs/example/wp/wp-load.php,因此這是 ABSPATH 將從中定義的地方。

get_home_path() 檢查 site_urlhome_url 是否不同,並從路徑中刪除子字串。否則返回 ABSPATH 值:

function get_home_path() {
    $home    = set_url_scheme( get_option( 'home' ), 'http' );
    $siteurl = set_url_scheme( get_option( 'siteurl' ), 'http' );
    if ( ! empty( $home ) && 0 !== strcasecmp( $home, $siteurl ) ) {
        $wp_path_rel_to_home = str_ireplace( $home, '', $siteurl ); /* $siteurl - $home */
        $pos = strripos( str_replace( '\\', '/', $_SERVER['SCRIPT_FILENAME'] ), trailingslashit( $wp_path_rel_to_home ) );
        $home_path = substr( $_SERVER['SCRIPT_FILENAME'], 0, $pos );
        $home_path = trailingslashit( $home_path );
    } else {
        $home_path = ABSPATH;
    }

    return str_replace( '\\', '/', $home_path );
}

在程式碼中使用它

呼叫 get_home_path() 必須在已包含 wp-admin/includes/file.php 的環境中完成。

例如在 admin_init 鉤子中使用 get_home_path() 很好,但在 init 中使用它不會導致 PHP 致命錯誤:

Call to undefined function get_home_path()

此檔案僅包含在 admin(儀表板)上下文中,如果你在此上下文之外絕對需要它,則需要在呼叫函式之前自己包含該檔案:

require_once(ABSPATH . 'wp-admin/includes/file.php');