मैं पृष्ठ शीर्षक को गतिशील रूप से कैसे सेट करूँ?


19

क्या कोड के साथ पृष्ठ का शीर्षक बदलना संभव है?

उदाहरण के लिए, मान लें कि पृष्ठ का नाम "बुक योर ऑर्डर" है, लेकिन मैं इसे "बुक ऑर्डर # 123" में बदलना चाहता हूं।

मैंने Google को थोड़ा सा देखा और यहाँ देखा और कुछ भी नहीं देखा। किसी को एक प्लगइन या हैक का पता है?

wp_title पृष्ठ शीर्षक लौटाता है, लेकिन पृष्ठ शीर्षक सेट करने की अनुमति नहीं देता: http://codex.wordpress.org/Function_Reference/wp_title


मूल्य कहां से आएगा? उस पृष्ठ में # 123 का मान क्या है?
सगिव एसईओ

जवाबों:


23

इस पर कोई दस्तावेज नहीं है लेकिन आप हमेशा the_titleइस तरह से एक फ़िल्टर लागू कर सकते हैं :

add_filter('the_title','some_callback');
function some_callback($data){
    global $post;
    // where $data would be string(#) "current title"
    // Example:
    // (you would want to change $post->ID to however you are getting the book order #,
    // but you can see how it works this way with global $post;)
    return 'Book Order #' . $post->ID;
}

इन्हें देखें:

http://codex.wordpress.org/Function_Reference/the_title

http://codex.wordpress.org/Function_Reference/add_filter


यह सभी शीर्षकों को ओवरराइड करने के लिए लगता है। मैं केवल वर्तमान शीर्षक को कैसे ओवरराइड करूं?
पेट्रिस थेरॉन

आपको कॉलबैक में एक शर्त जोड़ने की आवश्यकता होगी, जैसेif ($post->ID == 45) { ... }
निक बैरेट

3
the_titleफ़िल्टर अब Wordpress के नवीनतम संस्करणों में काम नहीं करता है, अन्य उत्तरों में विस्तृत रूप में उपयोग document_title_partsया pre_get_document_titleफ़िल्टर करता है।
ब्रेंडन नी

8

वर्डप्रेस 4.4 के रूप में, आप document_title_partsशीर्षक बदलने के लिए वर्डप्रेस फ़िल्टर का उपयोग कर सकते हैं ।

निम्नलिखित जोड़ें functions.php:

add_filter('document_title_parts', 'my_custom_title');
function my_custom_title( $title ) {
  // $title is an array of title parts, including one called `title`

  $title['title'] = 'My new title';

  if (is_singular('post')) {
    $title['title'] = 'Fresh Post: ' . $title['title'];
  }

  return $title;
}

लेकिन आप फ़िल्टर करने के लिए पैरामीटर में कहाँ से गुजरते हैं?
टिनटिनब्यूलेटर Zea

उपरोक्त फ़ंक्शन कार्य को संशोधित करता है the_title()और get_the_title()कार्य करता है - इसलिए किसी भी पैरामीटर को पारित करने की आवश्यकता नहीं है।
ब्रेंडन नी

5

दस्तावेज़ की titleविशेषता को बदलने के इच्छुक लोगों के लिए , मैंने पाया कि wp_titleफ़िल्टर का उपयोग करना अब काम नहीं करता है। इसके बजाय, फ़िल्टर का उपयोग करेंpre_get_document_title :

add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
    return "My Modified Title";
}

स्रोत


1
इस अद्यतन को पोस्ट करने के लिए बाद में आने के लिए धन्यवाद। मैं वर्षों से मेरे लिए एक प्लगइन में wp_title का उपयोग कर रहा था और महसूस नहीं किया था कि यह अब तक काम नहीं कर रहा था और आपके उत्तर ने मुझे बहुत प्रयास किया। इसलिए धन्यवाद!
मैथ्यू ली

@MatthewLee यह सुनकर खुशी हुई कि आपकी मदद हुई :)
नाथन आर्थर

2

वास्तव में यह निर्भर करता है कि क्या आप वर्तमान पृष्ठ के लिए एक कस्टम शीर्षक प्रदर्शित करना चाहते हैं (अर्थात <title></title>हेडर में टैग की सामग्री ) या पेज बॉडी या लिस्टिंग में पृष्ठों के शीर्षक को फ़िल्टर करें।

पूर्व मामले में (वर्तमान पृष्ठ का शीर्षक), wp_title()जैसे के लिए एक फ़िल्टर जोड़ने का प्रयास करें: http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title

यदि आप पूरे बोर्ड के पेज टाइटल को संशोधित करना चाहते हैं, तो फ़िल्टरिंग the_title()ट्रिक करेगी: http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title


वास्तव में मेरे अनुभव में आपको दोनों को फ़िल्टर करने wp_titleऔर दोनों the_titleको कवर करने की आवश्यकता है ।
ज्यॉफ्री

मुझे यकीन नहीं है कि अगर इसकी कमी के कारण, लेकिन मेरे लिए tis काम नहीं करता है। मैंने संयोजन और इनलाइन फ़िल्टर और नए apply_filters ('pre_get_document_title', स्ट्रिंग $ शीर्षक) की कोशिश की है
लैंड किया

दुख की बात है कि न तो मेरे लिए काम किया।
डेबी कुरथ

यह उत्तर लगभग 6 वर्ष पुराना है; पोस्टर के रूप में (और कोई व्यक्ति जो अभी WP के साथ सक्रिय रूप से काम नहीं करता है), मैं इसके बजाय नवीनतम दस्तावेज़ देखने का सुझाव दूंगा।
निक जुब

1

जब Yoast सक्षम होता है तो आपको शीर्षक को ओवरराइड करने की आवश्यकता होती है:

add_filter('wpseo_title', 'custom_titles', 10, 1);
function custom_titles() {

  global $wp;
  $current_slug = $wp->request;

  if ($current_slug == 'foobar') {

    return 'Foobar';
  }
}

-2

तो आप प्रति पृष्ठ के आधार पर शीर्षक बदलना चाहते हैं? सबसे पहले सेटअप एक कस्टम पोस्ट एक बॉक्स से मुलाकात की। मुंहतोड़ पत्रिका ने इसे हाल ही में कवर किया: http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ । यदि आप कस्टम मेटा बॉक्स का मान रखते हैं, तो आप शीर्षक को बदलने के लिए एक साधारण फ़ंक्शन बना सकते हैं।

कई एसईओ प्लगइन्स हैं जो इस कार्यक्षमता को भी प्रदान करते हैं। उदाहरण के लिए Yoast SEO आज़माएं: http://wordpress.org/extend/plugins/wordpress-seo/

उम्मीद है की यह मदद करेगा।


1
ये समाधान "गतिशील रूप से" लेकिन "मैन्युअल रूप से" शीर्षक नहीं बदलेंगे।
गुस्तावो

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