Get_home_path () ve ABSPATH arasındaki fark nedir?


27

Arasındaki fark nedir get_home_path()ve ABSPATH? Her ikisinin de noktası WordPress kurulum kökünü göstermiyor mu?

Yanıtlar:


33

Onlar gereken aynı şeyi yapmak, ancak belirli koşullar altında, olmayabilir de.

Her şeyden önce not:

Kodeks girişi ile ilgili olarak,

Açıklama

WordPress kurulumunun kök dizinine mutlak dosya sistemi yolunu alın.

Geri dönüş değeri

WordPress kurulumunun kök dizinine tam dosya sistemi. Wordpress'i alt klasöre yüklerseniz, alt klasör konumunu gösterir.

Örnekler

$path = get_home_path();
print "Path: ".$path; // Return "Path: /var/www/htdocs/" or "Path: /var/www/htdocs/wordpress/" if it is subfolder

WordPress'i bir alt dizine yüklediyseniz, dönüş değerinin alt klasörün yolunu döndüreceğini belirtir. Bu aslında yanlıştır.

get_home_path()bir alt dizinde kurulu olsa bile, WordPress kurulumunuzun kök dizinini döndürecektir. İşlevin amacı budur.

WordPress kurulumunuzun bir alt dizinde olduğunu varsayalım /dev,

Bir çağrı günlüğe kaydederseniz ABSPATH, o zaman sonuç hangisi olacaktır, /var/www/htdocs/devhangisi kurulumunuzun kökü değildir . Kurulumunuzun kökü /var/www/htdocs.

ABSPATHİlk önce, içinde tanımlanacağı wp-load.phpyer /var/www/htdocs/dev/wp-load.phpburası, ABSPATHtanımını nereden alacağıdır.

Daha get_home_path()fazla inceleme yaparsanız site_urlve home_urlfarklı olması durumunda, dizgede bulunan alt dizinin konumuna göre yönetilen yoldan bir alt dizenin alındığını not edersiniz .

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 );
}

Bu nedenle, bunun bir sonucu olarak get_home_path()ve ABSPATHbir alt dizinde yüklü WordPress varsa farklı sonuçlar döndürebilir.

İkinci olarak, görüşme get_home_path(), eklenmiş olanın wp-admin/includes/file.phpzaten dahil edildiği bir bağlamda yapılmalıdır .

Örnek olarak get_home_path(), admin_initkancayı kullanmak , içini kullanmak gibi initolmadığı durumlarda iyidir .

Bu dosyanın yalnızca admin (gösterge panosu) içeriğinden dahil edildiğini görmek, bu içeriğin dışında kesinlikle ihtiyacınız olursa, işlevi çağırmadan önce dosyayı kendiniz eklemeniz gerekir.

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

İronik (veya değil) kullananlar ABSPATH: D


İyi açıklanmış, tüm üçüncü parti geliştiricilerin sabiti ve işlevi kullanmaması gerektiğini düşünüyorum. Çünkü WordPress yerde bulunabilir belge kök nedenleri dışında yerleştirerek, sabit ve fonksiyon hem örn dönmek /var/apps/wordpressyerine /var/www/htdocs. Aksine kullanım $_SERVER['DOCUMENT_ROOT'], en azından belge kökünün değişmeyeceğinden emin olabilirseniz.
Fleuv

@Fleuv Aslında bu zor bir $_SERVER['DOCUMENT_ROOT']konudur ... sorunları da var ... örneğin doğru şekilde ayarlanamaz ya da ayarlanamaz. Bununla başa çıkmak için düşünebileceğim başka yollar da var ... Her birinin kendi uyarıları var. Çok eğlenceli :)
Adam

1
Bu çözüm, WP "tanımlı değil" hatasını attıktan sonra tam olarak istenen şekilde açıklandı ve çalıştı. Teşekkürler;)
Chris Sprague

-1

WP'nin "Ev" sayfasına bağlanmak için home_url () kullanıyorum . Bazen, site_url () gerçekten senin home_url () olmayabilir . Belirli bir sayfayı Wordpress'te ana sayfa olarak tanımlayabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.