Home_url () और site_url () के बीच क्या अंतर है


65

मेरी समझ यह है कि site_url()वर्डप्रेस कोर फाइलें हैं, जहां वह स्थान देता है।

इसलिए, यदि मेरा ब्लॉग होस्ट किया जाता है, http://example.com/blogतो site_url()रिटर्न देता हैhttp://example.com/blog

लेकिन फिर फर्क कैसे पड़ता है home_url()? मेरे लिए, home_url()एक ही चीज़ लौटाता है:http://example.com/blog

अगर यह सही है, तो क्या मुझे वापस जाने के लिए वर्डप्रेस मिल सकता है http://example.com/?


4
आप एक ही बार में दो प्रश्न पूछ रहे हैं। का जवाब "क्या home_url () और site_url () के बीच अंतर है?" सवाल से अलग है, "मुझे URL को उपनिर्देशिका के बिना URL रूट वापस करने के लिए कैसे मिलेगा जहां यह स्थापित है?"
वोलोमाइक

इन कोडेक्स गाइडों की समीक्षा करें: codex.wordpress.org/… ; codex.wordpress.org/… ; codex.wordpress.org/…
तारा

जवाबों:


51

आप एक ही बार में दो प्रश्न पूछ रहे हैं:

  1. बीच क्या अंतर है home_url()और site_url()?
  2. मुझे URL को उपनिर्देशिका के बिना URL रूट वापस करने के लिए कैसे मिलता है जहां यह स्थापित है?

यहां उत्तर दिए गए हैं, और मैंने एंड्रयू के एक प्रमुख डेवलपर एंड्रयू नैसीन के साथ पुष्टि की, साथ ही एंड्रयू ने मुझे जो बताया उसकी पुष्टि करने के लिए कुछ सर्वर परीक्षणों को चलाया।

प्रश्न 1

सामान्य में> wp-admin की सेटिंग, home_url()"साइट एड्रेस (URL)" लेबल वाले फ़ील्ड को संदर्भित करता है। भ्रामक, हुह? हाँ, यह "साइट पता" कहता है ताकि आप मान लें site_url(), लेकिन आप गलत होंगे । अपना परीक्षण चलाएं और आप देखेंगे। (आप अस्थायी रूप से एक ड्रॉप कर सकते हैं echo H1के साथ मैदान site_url()और home_url()अपने अपने विषय के functions.php के शीर्ष पर मान।)

इस बीच, site_url()जनरल> सेटिंग्स में "वर्डप्रेस एड्रेस (यूआरएल)" लेबल वाले फ़ील्ड को संदर्भित करता है।

इसलिए, यदि आप संदर्भ के लिए चाहते हैं, जहां एक भौतिक पथ हो सकता है जैसे कि एक छवि को लोड करने के लिए URL पर एक प्लगइन फ़ोल्डर पथ को कॉल करना, या किसी छवि को लोड करने के लिए थीम के फ़ोल्डर पथ को कॉल करना, तो आपको वास्तव में उन लोगों के लिए अन्य कार्यों का उपयोग करना चाहिए - देखो plugins_url()और get_template_directory_uri()

site_url()हमेशा स्थान जहां पर टैकिंग द्वारा साइट तक पहुंच सकता है हो जाएगा /wp-admin, अंत पर जबकि home_url()मज़बूती से इस स्थान नहीं होगा।

वह स्थान home_url()होगा जहां आपने अपना मुखपृष्ठ सामान्य> सेटिंग "साइट पता (URL)" फ़ील्ड सेट करके बनाया होगा।

प्रश्न 2

इसलिए, यदि मैंने अपना ब्लॉग अंदर रखा है http://example.com/blog, और example.comसिर्फ कुछ स्थिर साइट है, जहां मुझे एक पोर्टफोलियो थीम पसंद है, तो यह एक ऐसा परिदृश्य होगा जो आपके प्रश्न के अनुरूप है। ऐसी स्थिति में, मैं कोड के इस स्निपेट का उपयोग करूंगा:

<?php
function getDomain() {
    $sURL    = site_url(); // WordPress function
    $asParts = parse_url( $sURL ); // PHP function

    if ( ! $asParts )
      wp_die( 'ERROR: Path corrupt for parsing.' ); // replace this with a better error result

    $sScheme = $asParts['scheme'];
    $nPort   = $asParts['port'];
    $sHost   = $asParts['host'];
    $nPort   = 80 == $nPort ? '' : $nPort;
    $nPort   = 'https' == $sScheme AND 443 == $nPort ? '' : $nPort;
    $sPort   = ! empty( $sPort ) ? ":$nPort" : '';
    $sReturn = $sScheme . '://' . $sHost . $sPort;

    return $sReturn;
}

क्या आपके पास A.Nacin के साथ चर्चा का लिंक है?
केसर

1
यह ईमेल के जरिए हुआ था। माफ़ करना। ओह, और संपादन के लिए धन्यवाद - मुझे याद होगा कि अगली बार वाक्यविन्यास बदल जाएगा।
वोलोमाइक

8
मुझे उस साइट पता (URL) '=' घर 'और' WordPress पता (URL) '=' siteurl 'का एहसास होने में बहुत लंबा समय और बहुत दर्द हुआ। उन्हें निश्चित रूप से उन लेबल को बदलना चाहिए।
जेबीएम

दूसरे प्रश्न के लिए आपका जवाब जैकपॉट हिट करता है!
डेवनेर

7

यदि आप चाहते हैं कि WP एक निर्देशिका में स्थापित हो, लेकिन आपके डोमेन रूट पर साइट होम हो, तो आपको मुख्य index.php फ़ाइल को अपने डोमेन रूट पर ले जाना होगा और अपनी निर्देशिका में इंगित करने के लिए आवश्यक कथन को संपादित करना होगा।

इस प्रक्रिया को यहाँ उल्लिखित किया गया है: वर्डप्रेस की अपनी निर्देशिका देना


मैं हमेशा से ही उपयोग करता हूं home_url()क्योंकि मैं wp नेटवर्क मोड पर हूं। मैंने केवल एक बार वर्डप्रेस को अपनी निर्देशिका दी है और यह सिर्फ मेरी पसंद नहीं थी। लेकिन मैं हालांकि wp_content_dirकुछ साइटों पर उपयोग करते हैं।
xLRDxREVENGEx

मुझे मल्टीसाइट के साथ कोई अनुभव नहीं है, इसलिए मैं परिचित नहीं हूं कि यह सामान उस स्थिति में कैसे काम करता है। मैं केवल चीजों को साफ रखने और रूट को अव्यवस्थित नहीं करने के लिए एक निर्देशिका में WP स्थापित करना पसंद करता हूं।
मिलो

मेरी फ़ाइल संरचना शायद आसपास के सबसे साफ लोगों में से एक है। home/usr/public_html/site1 home/usr/public_html/site2और तो और फिर wp_content_dirआमतौर पर एक
सीडीएन

अगर एक WP स्थापित केवल एक चीज थी तो यह ठीक होगा, लेकिन मैं ज्यादातर सैकड़ों फाइलों और निर्देशिकाओं के साथ अन्य लोगों के सर्वरों पर काम कर रहा हूं।
मिलो

क्या मेरी समझ सही है कि site_url () और home_url () एक ही हैं, जब तक कि कोई अपने वर्डप्रेस इंस्टाल डायरेक्टरी को रूट से अलग नहीं करता है?
प्रवीण

3

TLDR:

एक गैर-मानक स्थापना में, आप अपनी वर्डप्रेस फ़ाइलों को अपनी वेबसाइट के रूट में एक उपनिर्देशिका में रख सकते हैं।
... और फिर भी आपके आगंतुकों को आपकी साइट के डोमेन (रूट) URL से आपकी वर्डप्रेस "वेबसाइट" का उपयोग करने की अनुमति देता है, बिना उपनिर्देशिका नाम को संलग्न किए बिना:
(यानी: www.example.comबनाम www.example.com/wordpress):

WP function  | wp_options. | WP constant  | what it represents       | WP Settings Label | Example     
-------------------------------------------------------------------------------------------------------------------------------------
`site_url()` | `siteurl`   | `WP_SITEURL` | WordPress files location | WordPress Address | https://www.example.com/wordpress
`home_url()` | `home`      | `WP_HOME`    | browser address bar      | Site Address      | https://www.example.com 

जहां WP स्थिरांक के लिए मान wp_options / WP सेटिंग्स मान पर पूर्वता लेता है।

वर्डप्रेस के लिए विभिन्न कॉन्फ़िगरेशन

सबसे मानक वर्डप्रेस इंस्टॉलेशन में, home_urlऔर site_urlसमान मूल्य होगा।
भले ही, वे दो अलग-अलग चीजों का प्रतिनिधित्व करते हैं।

एक गैर-मानक स्थापना में, उनके भिन्न मूल्य हो सकते हैं।

नोट: मैं आसानी से पठनीयता के लिए अपने जवाब में प्रोटोकॉल छोड़ रहा हूं।
इस पोस्ट के साथ प्रारंभ में लगा हर यूआरएल में: https://, http://या //
(जब तक मैं यह पहले से ही शामिल है)।

( //है relativeप्रोटोकॉल और के लिए या तो / दोनों काम करेंगे http://या https://)

मानक प्रतिष्ठान ("वन-क्लिक" इंस्टॉल सहित)

home_url: आपकी (वर्डप्रेस) वेबसाइट का मुख पृष्ठ है, जैसा कि उपयोगकर्ता के पता बार में दिखाया गया है।
site_url: वह निर्देशिका है जहां आपकी वर्डप्रेस फाइलें स्थित हैं।

वर्डप्रेस की 5 मिनट की इंस्टॉल वर्डप्रेस फाइलें इन दो मानों को एक समान बनाती हैं - वर्डप्रेस फाइलें उसी फ़ोल्डर में स्थापित की जाएंगी जिसे आप चाहते हैं कि लोग आपकी वेबसाइट, या आपके सर्वर की वेबसाइट के वर्डप्रेस (ब्लॉग) हिस्से का उपयोग करें।

उदाहरण 1:
: उपयोगकर्ता पर अपने ब्लॉग तक पहुँचता है www.example.com,
वर्डप्रेस पर स्थापित फ़ाइलों: www.example.com, या अपने सर्वर की वेबसाइट के रूट फ़ोल्डर।

home_url=== site_url==="www.example.com"

उदाहरण 2:
उपयोगकर्ता पर अपने ब्लॉग तक पहुँचता है: www.example.com/blog,
वर्डप्रेस फ़ाइलों पर स्थापित: www.example.com/blog, या में blogअपनी वेबसाइट की जड़ के अंदर फ़ोल्डर।

home_url=== site_url==="www.example.com/blog"

इस मामले www.example.comमें मुख्य वेबसाइट है, और www.example.com/blogआपके ब्लॉग की जड़ है।
यहाँ आपका ब्लॉग अलग हो गया है, और आपकी मुख्य वेबसाइट के सबसेट के रूप में काम करता है।
इस मामले में, अपने मुख्य वेबसाइट है नहीं नियंत्रित, परिभाषित, या स्टाइल से वर्डप्रेस।
बस आपका ब्लॉग है आपके ब्लॉग के सभी url को आगे बढ़ाया जाएगाwww.example.com/blog

नोट: प्रलेखन में, "वर्डप्रेस साइट / वेबसाइट" (केवल "साइट / वेबसाइट" के विपरीत) उस निर्देशिका को संदर्भित करता है जहां आपकी वर्डप्रेस फाइलें स्थापित हैं। इस मामले में, यह है www.example.com/blog- blogफ़ोल्डर के भीतर सब कुछ । इस परिदृश्य में "वर्डप्रेस वेबसाइट", आपके डोमेन, आपकी जड़ या आपकी मुख्य वेबसाइट के समान नहीं है। यह आपकी समग्र वेबसाइट का सबसेट है। एक वेबसाइट के अंदर एक वेबसाइट की तरह की तरह। मैं इसका उल्लेख करता हूं क्योंकि यह शब्दावली स्पष्ट या भ्रमित करने वाली लग सकती है, यह विशेष रूप से सेटअप को देखते हुए।

वैकल्पिक वर्डप्रेस इंस्टॉलेशन कॉन्फ़िगरेशन

वर्डप्रेस अपनी खुद की निर्देशिका , अनुभाग दे रही हैMethod II (With URL change)

उदाहरण के लिए, बहुत से लोग अपनी वेबसाइट के रूट फ़ोल्डर को सभी वर्डप्रेस फ़ाइलों के साथ रोकना नहीं चाहते हैं।
वे एक उपनिर्देशिका में वर्डप्रेस स्थापित करना चाहते हैं, * लेकिन "ब्लॉग" या "वर्डप्रेस वेबसाइट" तक पहुंच है जैसे कि वेबसाइट के लिए सर्वर के रूट में फाइलें स्थापित की गई थीं।

यह विशेष रूप से सच है जब वर्डप्रेस का उपयोग पूरी वेबसाइट बनाने और चलाने के लिए किया जाता है जिसमें "ब्लॉग" भी नहीं होता है।

उदाहरण 3:
: उपयोगकर्ता अपने पर "ब्लॉग" तक पहुँचता है www.example.com,
वर्डप्रेस पर स्थापित फ़ाइलों: www.example.com/wordpress, या अपने सर्वर की वेबसाइट के रूट फ़ोल्डर।

home_url=== "www.example.com"
site_url==="www.example.com/wordpress"

(नोट: यह कॉन्फ़िगरेशन केवल इन चरों के मूल्यों को बदलकर "आउट ऑफ द बॉक्स" नहीं चलेगा। इसे ठीक से काम करने के लिए अतिरिक्त कॉन्फ़िगरेशन परिवर्तन की आवश्यकता है)
देखें कि वर्डप्रेस अपनी खुद की निर्देशिका , यह Method II (With URL change)कैसे करें के लिए शीर्षक वाला अनुभाग देखें ।

में इस मामले home_urlऔर site_urlविभिन्न मूल्यों धारण करना चाहिए।

इस सेटअप में, आप चाहते हैं कि आपकी वेबसाइट ठीक उसी तरह काम करे जैसे कि आपकी वेबसाइट के लिए सर्वर की रूट डायरेक्टरी में वर्डप्रेस फाइलें इंस्टॉल की गई थीं ...
लेकिन, सर्वर पर संगठनात्मक उद्देश्यों के लिए,
आपके पास वास्तवwordpress में सर्वर में बुलाए गए फ़ोल्डर में आपकी वर्डप्रेस फाइलें हैं अपनी वेबसाइट के लिए रूट निर्देशिका।

इसलिए, उपयोगकर्ता www.example.comआपके वर्डप्रेस होम पेज को प्राप्त करने के लिए टाइप करेगाwww.example.com/wordpress

वर्डप्रेस फ़ंक्शन <-> डेटाबेस चर <-> वर्डप्रेस कॉन्स्टेंट

यह खंड उपर्युक्त 3 विन्यास को मानता है।
पता बार url: www.example.com
wordpress files: / wordpress directory

(अन्य मामले तुच्छ हैं: सभी चर / फ़ंक्शन समान मान रखते हैं / वापस करते हैं।)

के लिए मान कैसे सेट करें site_urlऔरhome_url

पहले, मुझे ध्यान दें कि siteurlऔर homeऊपर के कार्यों द्वारा लौटाए गए मानों को संग्रहीत करें

1) आम तौर पर आप ये मान वर्डप्रेस बैकएंड / डैशबोर्ड / एडमिन पैनल पर सेट करते हैं:
Settings -> General ->
siteurl वर्डप्रेस एड्रेस: https://www.example.com/wordpress
home साइट एड्रेस: https://www.example.com

(यहां ट्रेलिंग स्लैश शामिल न करें - जो कहीं और कॉन्फ़िगर किया जाएगा)

2) वैकल्पिक रूप से, आप इन मूल्यों को अपने वर्डप्रेस डेटाबेस में सेट करते हैं:
wp_optionsटेबल ->

`options_name` | `options_value`
----------------------------------------------------
`siteurl`      | `https://www.example.com/wordpress`  
`home`         | `https://www.example.com`  

(यहां ट्रेलिंग स्लैश शामिल न करें - जो कहीं और कॉन्फ़िगर किया जाएगा)

3) संपादित करें अपने wp-config.php
परिभाषित इन विशिष्ट स्थिरांक पकड़ करने के लिए अपने मूल्यों
को परिभाषित करें WP_HOMEऔर WP_SITEURLअपने के ऊपर की ओर इन पंक्तियों डालने से सेटिंग wp-config.phpफ़ाइल:

define('WP_SITEURL','http://example.com/wordpress');  // wordpress core files
define('WP_HOME','http://example.com');               // address bar url

// ** MySQL settings - You can get this info from your web host ** //
...    

(यहां ट्रेलिंग स्लैश शामिल न करें - जो कहीं और कॉन्फ़िगर किया जाएगा)

संदर्भ: WP_SITEURL और WP_HOME

नोट: यह भ्रामक है
(मैं वास्तव में चाहता हूं कि वर्डप्रेस ने सेटिंग्स को अपने php नामों के समान लेबल किया था,
जैसे कि Wordpress Site Addressऔर Home Page Addressया कुछ और अधिक पसंद करें location of WordPress Site core filesऔर browser url to access WordPress home page)

`WP_SITEURL` <--> `site_url()` <--> `siteurl` <--> Wordpress Address <--> /wordpress   
`WP_HOME`    <--> `home_url()` <--> `home`    <--> Site Address      <--> /

अब यहाँ है जहाँ यह मुश्किल हो जाता है!

यदि आपने अपनीwp-config.phpफ़ाइलमें उन स्थिरांक को परिभाषित किया है, तो इससे कोई फर्क नहीं पड़ता कि आपके डेटाबेस / सेटिंग्स पृष्ठ में आपके क्या मूल्य हैं।
वास्तव में, आप इस मूल्य को बैक एंड के माध्यम से संशोधित नहीं कर पाएंगे (इसे बाहर निकाल दिया जाएगा)। आप अभी भी अपने डेटाबेस को संपादित करके संशोधित कर सकते हैं, लेकिन ऐसा करने से आपकी साइट पर कोई प्रभाव नहीं पड़ेगा, जबकि आपके wp-config फ़ाइल में स्थिरांक मौजूद हैं।

आप फ़ाइल को कॉन्फ़िगर करते हैं आपके डेटाबेस में मान नहीं बदलेगा (या इसलिए आप सेटिंग पृष्ठ)। इसके बजाय, आपके डेटाबेस / सेटिंग्स पृष्ठ मानों को अनदेखा किया जाएगा । Wp-config ओवरराइड में मान आपके डेटाबेस सेटिंग पर ओवरराइड या पूर्वता लेता है।

तो ... रैप अप (TLDR):

WP function  | wp_options. | WP constant  | what it represents       | WP Settings Label | Example     
-------------------------------------------------------------------------------------------------------------------------------------
`site_url()` | `siteurl`   | `WP_SITEURL` | WordPress files location | WordPress Address | https://www.example.com/wordpress
`home_url()` | `home`      | `WP_HOME`    | browser address bar      | Site Address      | https://www.example.com 

जहां WP स्थिरांक के लिए मान wp_options / WP सेटिंग्स मान पर पूर्वता लेता है।

Wp_options रिकॉर्ड मान और WP सेटिंग्स मान समान हैं।
एक का संपादन, दूसरे की परिभाषा से।
यह एक ही चर को एक्सेस करने के सिर्फ 2 अलग-अलग तरीके हैं।

दूसरी ओर, वर्डप्रेस कॉन्स्टेंट अद्वितीय और स्वतंत्र हैं।
आंतरिक रूप से, वर्डप्रेस (PHP) स्थिरांक अपने DB समकक्षों को ओवरराइड करते हैं।
यदि wp-config में स्थिरांक को परिभाषित किया जाता है, तो यह डेटाबेस को नहीं बदलता है।
लेकिन आंतरिक रूप से वर्डप्रेस हमेशा db एक के बजाय अपने मूल्य को पसंद / उपयोग करेगा ।


3

site_url()और home_url()कार्यों के समान हैं और वे कैसे काम में भ्रम की स्थिति हो सकती है।

site_url()समारोह के लिए मूल्य मान प्राप्त करता है siteurlमें wp_optionsअपने डेटाबेस में तालिका।

यह वर्डप्रेस कोर फ़ाइलों का URL है।
यदि आपकी मुख्य फाइलें /wordpressआपके वेब सर्वर पर एक उपनिर्देशिका में मौजूद हैं , तो मान होगा http://example.com/wordpress

home_url()समारोह के लिए मान प्राप्त करता है homeमें wp_optionsअपने डेटाबेस में तालिका।

यह वह पता है जो आप चाहते हैं कि लोग आपकी वर्डप्रेस वेब साइट को देखने के लिए जाएं।

यदि आपकी वर्डप्रेस कोर फाइलें मौजूद हैं /wordpress, लेकिन आप चाहते हैं कि आपका वेब साइट URL http://example.comहोम वैल्यू होना चाहिए http://example.com


2

अपने दूसरे प्रश्न का उत्तर देने के लिए:

प्रश्न: यदि यह सही है, तो क्या मुझे http://example.com/ वापस करने के लिए वर्डप्रेस मिल सकता है ?

आप तब तक नहीं कर सकते, जब तक कि आप वर्डप्रेस को अपनी डायरेक्टरी स्टेप्स नहीं देते । इसका उपयोग करने का अर्थ है कि आप वर्डप्रेस कोर फ़ाइलों को /blogया /WordPressफिर index.phpअपनी जड़ में डालते हैं ।

आप अपनी निर्देशिका के अंदर वर्डप्रेस लगाने का निर्णय लेते हैं तो आप का प्रयोग करेंगे home_url()करने के लिए जाने के लिए index.phpऔर site_url()कोर फ़ाइलें और इस तरह प्राप्त करने के लिए।

Refrences:
कोडेक्स फॉर site_url
कोडेक्स फॉरhome_url कोडिंग
फॉर वर्डप्रेस ओन डायरेक्ट्री


-1

किसी भी उप-निर्देशिका ( http://example.com/blog के बजाय http://example.com/ ) के बिना साइट url प्राप्त करने का सबसे आसान तरीका , बस बैकस्लैश का उपयोग करें /

उदाहरण के लिए, यदि आप टाइप करते हैं:

<a href="/">domain url</a>

यह एक लिंक बनाएगा जो आपके डोमेन पर जाता है


भाग लेने के लिए धन्यवाद। दुर्भाग्य से, यह ओपी द्वारा प्रस्तुत प्रश्न का उत्तर नहीं देता है। ऐसे कई कारण हैं जिनकी वजह से व्यक्ति को उन कार्यों का उपयोग करने की आवश्यकता होती है जिनके बारे में ओपी पूछता है। यह संभावना नहीं है कि ओपी केवल html के माध्यम से अपने होम पेज पर लिंक जोड़ना चाहता है, जैसे कि किसी पोस्ट को संपादित करके। यह अधिक संभावना है, ओपी एक php थीम फ़ाइल, या एक प्लगइन फ़ाइल संपादित कर रहा है। किसी भी स्थिति में, वे HTML के साथ नहीं, php के साथ काम कर रहे हैं। अंत में, जबकि ओपी को इस साइट के बिना एक मूल्य की उम्मीद थी , एक अलग साइट पर, ओपी एक उपनिर्देशिका को वापस करने की उम्मीद कर सकता है। यह प्रत्येक साइट के लिए WP कॉन्फ़िगरेशन पर निर्भर करता है। /
शेरलहोमन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.