মধ্যে পার্থক্য কি 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']এর সমস্যাগুলিও রয়েছে ... উদাহরণস্বরূপ সেট করা যায় না বা সঠিকভাবে সেট করা যায় না ইত্যাদি। এটি হ্যান্ডেল করার জন্য আমি আরও ভাবতে পারি এমন আরও বিভিন্ন উপায় রয়েছে ... প্রত্যেকে তাদের নিজস্ব ক্যাভেট সহ। অনেক মজা :)
/var/apps/wordpressপরিবর্তে/var/www/htdocs। বরং ব্যবহার করুন$_SERVER['DOCUMENT_ROOT'], কমপক্ষে আপনি যদি নিশ্চিত করতে পারেন যে দস্তাবেজের রুটটি পরিবর্তিত হবে না।