बीच क्या अंतर है get_home_path()
और ABSPATH
? वर्डप्रेस स्थापित रूट को इंगित करने के लिए दोनों की बात नहीं है?
बीच क्या अंतर है get_home_path()
और ABSPATH
? वर्डप्रेस स्थापित रूट को इंगित करने के लिए दोनों की बात नहीं है?
जवाबों:
उन्हें एक ही काम करना चाहिए , लेकिन कुछ शर्तों के तहत, ऐसा नहीं हो सकता।
सबसे पहले ध्यान दें:
wp-admin/includes/file.php
संदर्भ बाकी बुला में शामिल किया जाना चाहिए get_home_path()
एक अपरिभाषित समारोह बुला कर दिया जाएगा।कोडेक्स प्रविष्टि के बारे में,
विवरण
वर्डप्रेस इंस्टॉलेशन की जड़ में पूर्ण फाइलसिस्टम पथ प्राप्त करें।
प्रतिलाभ की मात्रा
वर्डप्रेस इंस्टॉलेशन की जड़ में पूर्ण फाइलसिस्टम पथ। यदि आप सबफ़ोल्डर में वर्डप्रेस स्थापित करते हैं, तो यह सबफ़ोल्डर स्थान दिखाएगा
उदाहरण
$path = get_home_path(); print "Path: ".$path; // Return "Path: /var/www/htdocs/" or "Path: /var/www/htdocs/wordpress/" if it is subfolder
यह बताता है कि यदि आपने वर्डप्रेस को एक उप-निर्देशिका में स्थापित किया है तो रिटर्न वैल्यू सबफ़ोल्डर का पथ लौटाएगा। यह वास्तव में गलत है।
get_home_path()
भले ही यह एक उप-निर्देशिका में स्थापित हो, अपने वर्डप्रेस इंस्टॉलेशन की रूट डायरेक्टरी वापस कर देगा। यही कार्य का उद्देश्य है।
मान लें कि आपका वर्डप्रेस इंस्टॉलेशन एक उप-निर्देशिका के भीतर है /dev
, जिसे कहा जाता है ,
site_url
) (जैसे / var / www / htdocs / dev)home_url
)यदि आप एक कॉल लॉग इन करते हैं ABSPATH
, तो उसका परिणाम होगा, /var/www/htdocs/dev
जो कि आपके इंस्टॉलेशन का मूल नहीं है। आपकी स्थापना का मूल है /var/www/htdocs
।
ABSPATH
पहले परिभाषित किया गया है wp-load.php
जिसमें यह स्थित होगा /var/www/htdocs/dev/wp-load.php
इसलिए यह वह जगह है जहां ABSPATH
से इसकी परिभाषा ली जाएगी।
यदि आप get_home_path()
आगे का निरीक्षण करते हैं तो आप ध्यान देंगे कि यदि site_url
और home_url
अलग-अलग हैं, तो एक उप-स्ट्रिंग स्ट्रिंग के भीतर पाए गए उप-निर्देशिका की स्थिति (पहले भोग) द्वारा शासित पथ से ली गई है।
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()
और ABSPATH
यदि आपने वर्डप्रेस को उप-निर्देशिका में स्थापित किया है, तो विभिन्न परिणाम वापस आ सकते हैं।
दूसरे, कॉलिंग get_home_path()
को एक संदर्भ में किया जाना चाहिए , जहां wp-admin/includes/file.php
पहले से ही शामिल किया गया है।
एक उदाहरण के रूप get_home_path()
में admin_init
हुक के भीतर का उपयोग ठीक है, जहां इसका उपयोग करना init
नहीं है।
इस फाइल को देखने पर केवल एडमिन (डैशबोर्ड) के संदर्भ में ही शामिल किया जाता है, अगर आपको इस संदर्भ के बाहर इसकी आवश्यकता है, तो फ़ंक्शन को कॉल करने से पहले आपको फ़ाइल को स्वयं शामिल करना होगा,
require_once(ABSPATH . 'wp-admin/includes/file.php');
विडंबना (या नहीं) जो उपयोग करता है ABSPATH
: डी
$_SERVER['DOCUMENT_ROOT']
कि इसके मुद्दे भी हैं ... उदाहरण के लिए सेट या सही ढंग से सेट नहीं किया जाना चाहिए और इसी तरह। वहाँ अन्य तरीके मैं भी इसे संभालने के लिए सोच सकते हैं ... प्रत्येक अपने स्वयं के caveats के साथ। बहुत मज़ा :)
/var/apps/wordpress
की बजाय/var/www/htdocs
। उपयोग करने के बजाय$_SERVER['DOCUMENT_ROOT']
, कम से कम यदि आप आश्वस्त कर सकते हैं कि दस्तावेज़ रूट नहीं बदलेगा।