Arasındaki fark nedir get_home_path()
ve ABSPATH
? Her ikisinin de noktası WordPress kurulum kökünü göstermiyor mu?
Arasındaki fark nedir get_home_path()
ve ABSPATH
? Her ikisinin de noktası WordPress kurulum kökünü göstermiyor mu?
Yanıtlar:
Onlar gereken aynı şeyi yapmak, ancak belirli koşullar altında, olmayabilir de.
Her şeyden önce not:
wp-admin/includes/file.php
içeriğe dahil edilmesi gereken, bunun yerine get_home_path()
, çağrılmanın tanımsız bir işlevi çağırmasına yol açacaktır.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
,
site_url
) (örn. / var / www / htdocs / dev)home_url
)Bir çağrı günlüğe kaydederseniz ABSPATH
, o zaman sonuç hangisi olacaktır, /var/www/htdocs/dev
hangisi kurulumunuzun kökü değildir . Kurulumunuzun kökü /var/www/htdocs
.
ABSPATH
İlk önce, içinde tanımlanacağı wp-load.php
yer /var/www/htdocs/dev/wp-load.php
burası, ABSPATH
tanımını nereden alacağıdır.
Daha get_home_path()
fazla inceleme yaparsanız site_url
ve home_url
farklı 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 ABSPATH
bir 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.php
zaten dahil edildiği bir bağlamda yapılmalıdır .
Örnek olarak get_home_path()
, admin_init
kancayı kullanmak , içini kullanmak gibi init
olmadığı 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
$_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 :)
/var/apps/wordpress
yerine/var/www/htdocs
. Aksine kullanım$_SERVER['DOCUMENT_ROOT']
, en azından belge kökünün değişmeyeceğinden emin olabilirseniz.