Get_home_path () এবং ABSPATH এর মধ্যে পার্থক্য কী?


উত্তর:


33

তাদের একই জিনিস করা উচিত , তবে নির্দিষ্ট শর্তে, নাও পারে।

সবার আগে নোট:

  • যে প্যাড এন্ট্রি বিবরণ বিভ্রান্তিকর হয়
  • যে 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,

আপনি যদি কোনও কল লগ করেন 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: ডি


ভালভাবে ব্যাখ্যা করা হয়েছে, যদিও আমি মনে করি তৃতীয় পক্ষের বিকাশকারীদের ধ্রুবক বা ফাংশনটি ব্যবহার করা উচিত নয়। কারণ ওয়ার্ডপ্রেস জন্য যে কোন জায়গায় নির্নয় করা যাবে না , ডকুমেন্ট মূল কারনগুলির বাহিরে এটি স্থাপন উভয় ধ্রুবক এবং ফাংশন যেমন ফিরে যাওয়ার /var/apps/wordpressপরিবর্তে /var/www/htdocs। বরং ব্যবহার করুন $_SERVER['DOCUMENT_ROOT'], কমপক্ষে আপনি যদি নিশ্চিত করতে পারেন যে দস্তাবেজের রুটটি পরিবর্তিত হবে না।
ফ্লুভ

@ ফ্লুভ প্রকৃতপক্ষে এটি একটি কৌতূহল ... এমনকি $_SERVER['DOCUMENT_ROOT']এর সমস্যাগুলিও রয়েছে ... উদাহরণস্বরূপ সেট করা যায় না বা সঠিকভাবে সেট করা যায় না ইত্যাদি। এটি হ্যান্ডেল করার জন্য আমি আরও ভাবতে পারি এমন আরও বিভিন্ন উপায় রয়েছে ... প্রত্যেকে তাদের নিজস্ব ক্যাভেট সহ। অনেক মজা :)
আদম

1
এই সমাধানটি ভালভাবে ব্যাখ্যা করা হয়েছিল এবং ডাব্লুপি "সংজ্ঞায়িত" ত্রুটি নিক্ষেপ করার পরে ঠিক তেমন পছন্দসই হিসাবে কাজ করেছিল worked ধন্যবাদ;)
ক্রিস স্প্রেগ

-1

আমি ডাব্লুপিপির "হোম" পৃষ্ঠায় লিঙ্ক করার জন্য home_url () ব্যবহার করছি । কখনও কখনও, সাইট_ ইউরাল () সত্যই আপনার হোম_আর্ল () নাও হতে পারে । আপনি ওয়ার্ডপ্রেসে একটি চমত্কার পৃষ্ঠাটি হোমপৃষ্ঠা হিসাবে সংজ্ঞায়িত করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.