वर्तमान पृष्ठ का URL कैसे प्रदर्शित किया जाए?


55

मैं यह सुनिश्चित करने के लिए कस्टम PHP कोड जोड़ना चाहता हूं कि जब भी मेरी साइट का कोई पृष्ठ मेरे ब्राउज़र में लोड होता है, तो उस पृष्ठ का URL स्क्रीन पर गूँज जाता है। मैं उपयोग कर सकता हूं echo get_permalink(), लेकिन यह सभी पृष्ठों पर काम नहीं करता है। कुछ पृष्ठ (जैसे मेरा मुखपृष्ठ ) कई पोस्ट प्रदर्शित करते हैं, और अगर मैं get_permalink()इन पृष्ठों पर उपयोग करता हूं , तो प्रदर्शित पृष्ठ का URL वापस नहीं किया गया है (मेरा मानना ​​है कि यह लूप में अंतिम पोस्ट का URL लौटाता है)। इन पृष्ठों के लिए, मैं URL कैसे वापस कर सकता हूं?

क्या मैं get_permalink()एक विशेष हुक से जुड़ सकता हूं जो लूप निष्पादित होने से पहले फायर करता है? या क्या मैं किसी तरह लूप से बाहर निकल सकता हूं, या इसे पूरा होने के बाद रीसेट कर सकता हूं?

धन्यवाद।


क्या आप कुछ संदर्भ प्रदान कर सकते हैं कि आप इस URL के साथ क्या करना चाहते हैं? क्या आप साझा करने योग्य URL बनाने का प्रयास कर रहे हैं? लिंक / कार्यों के लिए कस्टम URL इकट्ठा करें?
टॉम जे नोवेल

@TomJNowell मैं एक विशेष JS स्क्रिप्ट को शामिल करना चाहूंगा, लेकिन केवल कुछ विशेष पृष्ठों पर (इस मामले में, वे पृष्ठ विभिन्न भाषाओं में मेरी साइट के मुखपृष्ठ हैं: example.com , example.com/fr , example.com/es , आदि)। जेएस फ़ाइल केवल मुखपृष्ठ पर दिखाई देने वाले कई शीर्षकों में हाइपरलिंक जोड़ने के लिए सर्वर करेगी।
cag8f

अगर यह सच है तो केवल लिपि is_home()या is_page( 'fr' )आदि का उपयोग क्यों न करें और केवल लिपि को संलग्न करें?
टॉम जे नोवेल

@TomJNowell अब मेरा कोड है, if ( home_url( $wp->request ) == home_url() ) { wp_enqueue_script();} यह भाषा की परवाह किए बिना, हर होम पेज पर दिखाई देता है। क्या आप जो सुझाव दे रहे थे?
cag8f

क्यों नहीं उपयोग $_SERVER['REQUEST_URI']और कंपनी? इस प्रश्न को देखें: stackoverflow.com/q/6768793/247696
फ्लिम्

जवाबों:


86

get_permalink() केवल सिंगल पेज और पोस्ट के लिए वास्तव में उपयोगी है, और केवल लूप के अंदर काम करता है।

मैंने देखा है यह सबसे सरल तरीका है:

global $wp;
echo home_url( $wp->request )

$wp->requestURL का पथ भाग शामिल है, उदाहरण के लिए। /path/to/pageऔर home_url()सेटिंग> सामान्य में URL को आउटपुट करता है, लेकिन आप इसके लिए एक पथ जोड़ सकते हैं, इसलिए हम इस कोड में होम URL के लिए अनुरोध पथ को जोड़ रहे हैं।

ध्यान दें कि यह संभवतः प्लेन के लिए निर्धारित पेरालिंक्स के साथ काम नहीं करेगा, और क्वेरी स्ट्रिंग्स ( ?foo=barURL का हिस्सा) को छोड़ देगा ।

URL प्राप्त करने के लिए जब पर्मलिंक को सादे पर सेट किया $wp->query_varsजाता है, तो आप इसके बजाय इसका उपयोग कर सकते हैं add_query_arg():

global $wp;
echo add_query_arg( $wp->query_vars, home_url() );

और आप इन दोनों विधियों को वर्तमान URL प्राप्त करने के लिए संयोजित कर सकते हैं, जिसमें क्वेरी स्ट्रिंग भी शामिल है, चाहे वो पारलिंक सेटिंग की हो:

global $wp;
echo add_query_arg( $wp->query_vars, home_url( $wp->request ) );

7
यदि परमिट सादा करने के लिए सेट echo '//' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];:।
मैक्स

1
@ जैकोब मैंने कोशिश की, लेकिन ऐसा लगता है कि यह केवल मेरे होमपेज का URL लौटाएगा। जैसा कि आप इस पृष्ठ ( dev.horizonhomes-samui.com/properties/hs0540 ) पर बाईं ओर ऊपर देख सकते हैं , जहां मैंने कोड डाला है echo home_url( $wp->request )। मैंने भी शामिल करना सुनिश्चित किया है global $wp। Permalinks 'Plain' नहीं हैं, लेकिन 'Post Name' पर सेट हैं। मुझे लॉग में कोई भी प्रासंगिक PHP त्रुटियाँ दिखाई नहीं देती हैं। यह विशेष पृष्ठ मेरी देव साइट का हिस्सा है, जो अन्यथा आगंतुकों के लिए बंद है। मुझे यकीन नहीं है कि यह मायने रखता है या नहीं। संपादित करें: वास्तव में, उस विचार को पकड़ें - उपयोगकर्ता त्रुटि हो सकती है। स्टैंड बाय ...
cag8f

@ जैकब 2 संपादित करें: ठीक है आपका कोड वास्तव में काम करता है। मेरा मुद्दा यह था कि मैं फ़ंक्शन में कोड शामिल कर रहा था। 'नग्न,' यानी किसी भी फ़ंक्शन में नहीं है जो हुक से जुड़ा हुआ है। तो आपका कोड मेरे ब्राउज़र में प्रदर्शित पृष्ठ की परवाह किए बिना, मुखपृष्ठ का URL लौटा रहा था। एक बार जब मैंने एक फ़ंक्शन के अंदर कोड स्थानांतरित कर दिया - एक WP हुक से जुड़ा एक फ़ंक्शन (wp_enqueue_scripts), तो यह वास्तव में प्रदर्शित पृष्ठ का URL वापस कर दिया। क्या आप उस व्यवहार का कारण जानते हैं? शायद मुझे उसके लिए एक नया प्रश्न बनाने की आवश्यकता है।
cag8f

3
@ cag8f यदि कोड functions.php में "नग्न" बैठता है, तो आप $ wp ऑब्जेक्ट के सभी गुणों को सेट करने से पहले इसे चला रहे हैं। जब आप इसे एक उपयुक्त हुक से जुड़े फ़ंक्शन में लपेटते हैं तो आप वर्डप्रेस कोड रन में उपयुक्त बिंदु तक इसके निष्पादन में देरी कर रहे हैं।
एंडी मैकाले-ब्रूक

वर्डप्रेस के साथ काम करने के लिए ये तरीके सभी भयानक हैं, और महान विचार हैं। आप trailingslashit()अपनी आवश्यकताओं के आधार पर, हालांकि, उन्हें जोड़ सकते हैं।
जेक

8

वर्डप्रेस में संपूर्ण वर्तमान URL प्राप्त करने के लिए आप नीचे दिए गए कोड का उपयोग कर सकते हैं:

global $wp;
$current_url = home_url(add_query_arg(array(), $wp->request));

यह क्वेरी पैरामीटर सहित पूर्ण पथ दिखाएगा।


Hi - यदि आप developer.wordpress.org/reference/functions/add_query_arg पर एक नज़र रखते हैं तो आप देखेंगे कि आपका कोड वास्तव में मौजूदा क्वेरी मापदंडों को संरक्षित नहीं करता है।
एंडी मैकाले-ब्रुक

2
क्वेरी पैरामीटर संरक्षित करने के लिए आप खाली प्रतिस्थापित करने की आवश्यकता होगी array()के साथ $_GET। यानी:home_url(add_query_arg($_GET,$wp->request));
ब्रैड एडम्स

यह काम नहीं करेगा यदि वर्डप्रेस को उपनिर्देशिका में स्थापित किया गया है
मंज़ूरवानी

1
function current_location()
{
    if (isset($_SERVER['HTTPS']) &&
        ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
        isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
        $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
        $protocol = 'https://';
    } else {
        $protocol = 'http://';
    }
    return $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
}

echo current_location();

क्या आप बता सकते हैं कि यह कोड कैसे और क्यों प्रश्न हल करता है?
kero

मेरी राय में सबसे लचीला समाधान। यह किसी भी WP पेज (यहां तक ​​कि wp-admin, wp-login.php, आर्काइव पेज आदि) पर भी काम करता है। बस ध्यान दें, कि इसमें
Philipp

1

निम्नलिखित कोड वर्तमान URL देगा:

global $wp;
echo home_url($wp->request)

क्वेरी पैरामीटर के साथ पूर्ण URL प्राप्त करने के लिए आप नीचे दिए गए कोड का उपयोग कर सकते हैं।

global $wp;  
$current_url = home_url(add_query_arg(array($_GET), $wp->request));

यह क्वेरी पैरामीटर सहित पूर्ण पथ दिखाएगा। यदि यह URL में पहले से ही क्वेरी मापदंडों को संरक्षित करेगा।


यह स्निपेट wp-admin/plugins.phpमेरे वर्तमान URL में स्किप हो गया है, यह केवल रूट पथ और क्वेरी स्ट्रिंग्स है।
रसजार्ड जार्डसज़ी

0

यह उदाहरण का एक बेहतर तरीका है जिसका पहले उल्लेख किया गया था। यह तब काम करता है जब सुंदर URL को सक्षम किया जाता है, लेकिन अगर इसमें कोई क्वेरी पैरामीटर होता है जैसे / पेज-स्लग /? पैरामाम = 1 या URL बिल्कुल भी बदसूरत है।

निम्नलिखित उदाहरण दोनों मामलों पर काम करेंगे।

    $query_args = array();

    $query = wp_parse_url( $YOUR_URL );

    $permalink = get_option( 'permalink_structure' );

    if ( empty( $permalink ) ) {

        $query_args = $query['query'];

    }

    echo home_url( add_query_arg( $query_args , $wp->request ) )

0

हो सकता wp_guess_url()है कि आपको क्या चाहिए। संस्करण 2.6.0 के बाद से उपलब्ध है।


यह सिर्फ आधार URL का अनुमान लगाता है। सीमा पर, आप एक समान प्रभाव के साथ समाप्त होते हैं home_url()
जेक

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.