वर्तमान पृष्ठ URL प्राप्त करें (पृष्ठ पर अंक लगाना सहित)


13

क्या वर्तमान पृष्ठ का सही URL प्राप्त करने के लिए WP फ़ंक्शन है? मतलब अगर मैंने सिर्फ एक पोस्ट खोला है, तो फ़ंक्शन उसी के रूप में लौटाता है get_permalink(), लेकिन अगर मैं पृष्ठ के पृष्ठांकित उदाहरण (जब टिप्पणियों के माध्यम से पेजिंग कर रहा हूं) पर हूं, तो फ़ंक्शन उसी तरह वापस आ जाता है जैसा get_pagenum_link(get_query_var('paged'))वह करेगा।

मैंने कोडेक्स खोजा है, लेकिन मुझे वह नहीं मिला, जिसकी मुझे तलाश थी। (लेकिन get_pagenum_link()वहां भी दस्तावेज नहीं है।)

मैं इस फ़ंक्शन के बारे में पहले से ही जानता हूं , लेकिन मुझे खुशी होगी अगर कोई "देशी" WP फ़ंक्शन होता जो काम करता है।

अग्रिम में धन्यवाद! सादर, रेने

जवाबों:


27

राजीव व्यास के जवाब के अलावा, आपको किसी भी गैर-रिक्त पैरामीटर को पास करने की आवश्यकता नहीं है add_query_arg()। निम्नलिखित ने हमेशा मेरे लिए अच्छा काम किया है:

// relative current URI:
$current_rel_uri = add_query_arg( NULL, NULL );

// absolute current URI (on single site):
$current_uri = home_url( add_query_arg( NULL, NULL ) );

फ़ंक्शन वापस गिरता है $_SERVER[ 'REQUEST_URI' ]और उस पर लागू होता urlencode_deep()है। Https://github.com/WordPress/WordPress/blob/3.8/wp-includes/functions.php#L673 देखें

संपादित करें: जैसा कि $_SERVER[ 'REQUEST_URI' ]अनफ़िल्टर्ड उपयोगकर्ता इनपुट का प्रतिनिधित्व करता है, किसी को हमेशा add_query_arg()संदर्भ के बदले जाने पर रिटर्न वैल्यू से बचना चाहिए । उदाहरण के लिए, का उपयोग करें esc_url_raw()DB उपयोग या के लिए esc_attr()या esc_url()HTML के लिए।

अपडेट करें

दिखाया गया उदाहरण जो एक पूर्ण यूआरआई (योजना और मेजबान युक्त) बनाना चाहिए, उप-निर्देशिकाओं के साथ मल्टीसाइट पर काम नहीं करता है क्योंकि home_url()एक पथ खंड सहित पूरा यूआरआई वापस कर देगा। मल्टीसाइट जागरूक कोड के लिए एक बेहतर समाधान यह होगा:

// absolute URI in multisite aware environment
$parts = parse_url( home_url() );
$current_uri = "{$parts['scheme']}://{$parts['host']}" . add_query_arg( NULL, NULL );

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


यह देखते हुए कि ओपी ने इस उत्तर को समाधान के रूप में नहीं चुना है, जो कि यह है। धन्यवाद।
cfx 16

3
global $wp;
$current_url = add_query_arg( $wp->query_string, '', home_url( $wp->request ) );

एक फ़ंक्शन नहीं है, लेकिन निश्चित रूप से वर्डप्रेस कोड का उपयोग कर रहा है।

http://kovshenin.com/2012/current-url-in-wordpress/


2
यह आंशिक रूप से काम करता है, लेकिन कुछ चीजें काम नहीं करती हैं जैसे मैं उन्हें चाहता हूं: पैरामीटर जैसे yearक्वेरी क्वेरी में जोड़े जाते हैं, भले ही वे पहले नहीं हुए हों, और अन्य पैरामीटर, उदाहरण के लिए replytocomपैरामीटर, खो जाते हैं। क्या आप इसके लिए कोई समाधान जानते हैं?
Ren Schubert

0

1) $_SERVER['REQUEST_URI']- यह उस पेज को एक्सेस करने के लिए URL को वापस करता है जो स्क्रिप्ट को निष्पादित कर रहा है। आप टाइप करने के लिए की जरूरत है http://www.example.com/product.php?id=5तो पृष्ठ पर पहुँचने का $_SERVER['REQUEST_URI']रिटर्न /product.php?id=5

2) $_SERVER['DOCUMENT_ROOT']- सर्वर की रूट डायरेक्टरी को लौटाता है जो सर्वर की कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट है। यह चर आमतौर पर /usr/yoursite/wwwलिनक्स और D:/xamps/xampp/htdocsखिड़कियों की तरह पथ देता है ।

3) $_SERVER['HTTP_HOST']- http हेडर में पाया गया होस्ट का नाम लौटाता है। यह चर आमतौर पर पथ को लौटाता है जैसे कि example.comजब आप http://example.comब्राउज़र के एड्रेस-बार में पाते हैं और www.example.comजब आप http://www.example.comएड्रेस-बार में देखते हैं तो वापस लौट आते हैं । यह तब काफी उपयोगी है जब आप PHP का उपयोग करते हुए ऑनलाइन भुगतान करते समय सत्र को संरक्षित करना चाहते हैं क्योंकि सत्र के लिए संग्रहित http://example.comनहीं है http://www.example.com

4) $_SERVER['HTTP_USER_AGENT']- उपयोगकर्ता एजेंट (ब्राउज़र) वेब पेज तक पहुँचने का विवरण देता है। हम strpos($_SERVER["HTTP_USER_AGENT"],”MSIE”)Microsoft इंटरनेट एक्सप्लोरर strpos($_SERVER["HTTP_USER_AGENT"],”Firefox”)का पता लगाने के लिए उपयोग कर सकते हैं या आप PHP में फ़ायरफ़ॉक्स ब्राउज़र का पता लगाने के लिए उपयोग कर सकते हैं ।

5) $_SERVER['PHP_SELF']- वर्तमान में निष्पादित स्क्रिप्ट का फ़ाइल-नाम लौटाता है। मान लीजिए कि आप URL तक पहुँच रहे हैं http://www.example.com/product.php?id=5तो अपनी स्क्रिप्ट में $_SERVER['PHP_SELF']वापस /product.phpआएँ।

6) $_SERVER['QUERY_STRING']- क्वेरी स्ट्रिंग लौटाता है यदि क्वेरी स्ट्रिंग का उपयोग वर्तमान में निष्पादित स्क्रिप्ट को एक्सेस करने के लिए किया जाता है। क्वेरी स्ट्रिंग वे स्ट्रिंग हैं जो "के बाद उपलब्ध हैं?" साइन $_SERVER['QUERY_STRING']इन करें । यदि आप निम्न URL को निष्पादित करने वाली स्क्रिप्ट में उपयोग करते हैं http://www.example.com/index.php?id=5&page=productतो यह id=5&page=productआपकी स्क्रिप्ट में वापस आ जाता है।

7) $_SERVER['REMOTE_ADDR']- वर्तमान पृष्ठ तक पहुंचने वाली रिमोट मशीन का आईपी पता लौटाता है। लेकिन आप $_SERVER['REMOTE_ADDR']ग्राहक की मशीन का वास्तविक आईपी पता प्राप्त करने के लिए उस पर भरोसा नहीं कर सकते । PHP में वास्तविक आईपी एड्रिएस कैसे प्राप्त करें, यह जानने के लिए यह लेख देखें।

8) $_SERVER['SCRIPT_FILENAME']- फ़ाइल का पूर्ण पथ लौटाता है जो वर्तमान में निष्पादित हो रहा है। यह var/example.com/www/product.phpलिनक्स की तरह पथ और D:/xampp/xampp/htdocs/test/example.phpखिड़कियों में पथ की तरह लौटता है ।


1
ध्यान रखें कि उनमें से कोई भी आपके सीएलआई में उपलब्ध नहीं है और इसलिए क्रोन नौकरियों के लिए बेकार है।
कैसर

0

wp_guess_url वह है जो आप ढूंढ रहे हैं।

साइट के लिए URL का अनुमान लगाएं।

केवल wp-admin निर्देशिका में नहीं लौटने वाले URL को पुनः प्राप्त करने के लिए wp-admin लिंक हटाएंगे।


जब मैंने इसका उपयोग करने का प्रयास किया तो यह वर्तमान पृष्ठ के अलावा एक पूरी तरह से भिन्न URL देता है।
किर्बी

0

add_query_args( null, null ) खाली कुंजी के साथ एक सरणी तत्व बना देगा ( $qs[""] = null) हालांकि यह परिणाम को प्रभावित नहीं करेगा।


Add_query_arg () के अनुसार | फंक्शन | वर्डप्रेस डेवलपर संसाधन , 2, 3 पैरामीटर वैकल्पिक हैं और उन्हें छोड़ा जा सकता है।

add_query_args( null, null )अधिक छोटा हो सकता है

$current_url = add_query_args( [] );

सबसे छोटा संस्करण भी है , हालांकि यह अनुशंसित नहीं है क्योंकि 1 पैरामीटर आवश्यक पैरामीटर है।

$current_url = add_query_args();

इसके अलावा, कृपया ध्यान दें कि दोनों home_url( add_query_vars( [] ) )और home_url( add_query_arg( null, null ) ) वास्तविक URL वापस नहीं हो सकता है जब वर्डप्रेस एक उप निर्देशिका में स्थापित किया गया है।

https://example.com/wp/wp/fooजब वर्डप्रेस को इनस्टॉल किया जाता है तो जैसे लौटाया जा सकता है https://example.com/wp/


अपडेट: 2017/01/23

निरपेक्ष URL प्राप्त करने के लिए डेविड के समाधान पर आधारित मेरा संस्करण।

$parts = parse_url(home_url());
$uri   = $parts['scheme'] . '://' . $parts['host'];

if (array_key_exists('port', $parts)) {
    $uri .= ':' . $parts['port'];
}

$uri .= add_query_arg([]);

0

मेरे लिए <?php esc_url(the_permalink()); ?>काम करता है (पृष्ठांकन के साथ एक संग्रह पृष्ठ पर)।


असंभव। the_permalink()बच निकले पर्मलिंक, यह कुछ भी वापस नहीं करता है। कुछ esc_url()भी नहीं मिलता है, और अगर यह होगा, तो यह एक बचा हुआ URL होगा।
FUXIA

आप सही हैं, यह केवल मुझे लगता है कि permalink कैशिंग के कारण काम किया है।
हेनिंग फिशर

-1

मैं अब पगलीकरण नहीं करता, लेकिन आप लूप के भीतर url प्राप्त करने के लिए इस फ़ंक्शन का उपयोग कर सकते हैं

<?php $ID = get_the_ID(); 
echo get_permalink( $ID ); ?>

वरना अगर आप php का उपयोग करना पसंद नहीं करते हैं, तो आप यहाँ jquery विधि का विकल्प भी चुन सकते हैं (इससे आपको इसे रगड़ने का काम करने में मदद मिलेगी)

$(document).ready(function () {
var vhref = $(location).attr('href');
var vTitle = $(this).attr('title');
$('#spnTitle').html('' + vTitle + '');
$('#spnURL').html('' + vhref + '');
});​

या यदि आप php फ़ंक्शन का उपयोग करना पसंद करते हैं, तो आपको लूप के बाहर आईडी प्राप्त करने की आवश्यकता है


1
क्षमा करें, लेकिन यह सिर्फ वही नहीं है जो मैंने माँगा है ... + the_permalink()इसे आईडी की आवश्यकता नहीं है जब इसे लूप के अंदर बुलाया जाए।
रेने शुबर्ट

2
इस प्रश्न का मूल प्रश्न बहुत कम था। इसने इसका सही उत्तर नहीं दिया और न ही इस विषय से संबंधित कोई बहुमूल्य जानकारी दी।
जौनीलैंडर

-2

आप वर्तमान पृष्ठ URL प्राप्त करने के लिए वर्डप्रेस फ़ंक्शन का उपयोग कर सकते हैं

the_permalink()

यह आपको कर्टम पेज URL लिंक लौटा देगा।


4
लगभग; वर्तमान पोस्ट का URL प्रिंटthe_permalink() करेगा । लेकिन यह अन्य अनुरोधों के लिए काम नहीं करेगा, और पेजिंग जैसे चर को शामिल नहीं करेगा। तो वास्तव में जवाब नहीं @ रेने शुबर्ट की तलाश है।
TheDeadMedic
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.