Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

WordPress 'Comments.php फ़ाइल के रहस्यों को उजागर करना

by
Length:LongLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

ऐसा लगता है की वर्डप्रेस का प्रयोग इन दिनों हर जगह हो रहा है, और इसमें कोई आश्चर्य नहीं है क्योंकि यह उपयोग करने में और कस्टमाइज करने में काफी आसान है। इस ट्यूटोरियल में, मैं डिफ़ॉल्ट वर्डप्रेस थीम की comments.php के स्ट्रक्चर को पूरी तरह से खोल दूँगा और आपको इसे आसान बनाने के लिए कोड के विभिन्न स्निपेट दूंगा।

आपके रिफरेन्स के लिए, मैंने कंटेंट की एक छोटी सी टेबल भी शामिल की है।

  1. PHP का बैकएन्ड
  2. General code
    1. Preventing direct access to comments.php
    2. Is a password required?
  3. Displaying the comments
    1. Basic comment template tags
    2. The final result
  4. The comment form
    1. Conditional statement overview
    2. Inserting the form
  5. Some little tricks
    1. Gravatars
    2. Comment numbers
    3. Comment links
    4. Editing comments
    5. Alternating colors for comments
    6. Displaying the allowed tags
    7. Comments RSS link
  6. Conclusion

1. PHP का बैकएन्ड

यह PHP के रॉ कोड है जो आपकी comments.php फ़ाइल फ़ंक्शन को बनाता है। एक नौसिखिया के लिए, यह डरावना दिख सकता है। हालांकि, चिंता न करें: अपनी कमैंट्स फ़ाइल में इस ट्यूटोरियल के साथ सभी चीजे क्रिस्टल की तरह स्पष्ट हो जायेगी!


2. सामान्य कोड

Comments.php तक सीधी पहुंच को रोकना

कोड की यह लाइन यूजर को गलती से comments.php को देखने से रोकती है। यह पेज पोस्ट पेज में शामिल होता है, अलग से नहीं। आप इसे सुरक्षा का एक उपाय मान सकते हैं। स्टेटमेंट के अंदर, आप कोई भी मैसेज डाल सकते हैं जिसे आप comments.php फ़ाइल देखने वाले व्यक्ति को प्रदर्शित करना चाहते हैं, विशेषतः एक die स्टेटमेंट।

क्या पासवर्ड की आवश्यकता है?

यह स्टेटमेंट (अच्छा, वास्तव में 2, लेकिन यदि आप उन्हें एक के रूप में देखते हैं, तो यह अधिक समझ में आता है) जांचती है कि क्या पोस्ट को देखने के लिए पासवर्ड आवश्यक है या नहीं। जाहिर है, अगर आपके पास पोस्ट देखने के लिए पासवर्ड नहीं है, तो आपको कमैंट्स को देखने की अनुमति भी नहीं है।

पहला if यह चेक करता है की क्या कोई पासवर्ड सेट है। दूसरी if स्टेटमेंट यह जांचती है कि क्या पासवर्ड के साथ कोई कुकी मौजूद है या नहीं और जब यह नहीं होती है तो उस के अनुसार ही मैसेज को प्रदर्शित करता है। आप दूसरी if स्टेटमेंट में जो आप चाहे उसे दे कर error मैसेज को कस्टमाइज कर सकते हैं।


3. कमैंट्स को दिखाना

पहली कंडीशनल स्टेटमेंट (if($comments)) जांचती है कि क्या कोई कमैंट्स है और फिर foreach स्टेटमेंट की मदद से उनमे लूप करती है। foreach स्टेटमेंट के अंदर, आप यह कंडीशनल स्टेटमेंट देखेंगे: if($comment->comment_approved == '0')। यह जांचता है कि कमेंट को मंजूरी दी गई है, और यदि अभी तक मंजूरी नहीं मिली है, तो मैसेज दिखाता है।

इसका एक उदाहरण नीचे दिए गए कोड होंगे।

बेसिक कमेंट टेम्पलेट टैग्स

इसे काम करते हुए कोड बनाने के लिए, आपको WordPress द्वारा उपलब्ध कराये गए टेम्पलेट टैग्स का उपयोग करना होगा।

टेम्पलेट टैग डिस्क्रिप्शन
<?php comment_ID(); ?> कमेंट की ID
<?php comment_author(); ?> एक कमेंट के लेखक?
<? php comment_author_link(); ?> एक कमेंट के लेखक, अपनी वेबसाइट के लिंक के साथ व्रैप किये हुए अगर उसने कोई स्पेसीफाई की है
<? php comment_type(); ?> कमेंट का प्रकार; pingback, trackback या कोई कमेंट
<? php comment_text(); ?> वास्तविक कमेंट
<? php comment_date(); ?> तिथि जब इसे पोस्ट किया गया था
<? php comment_time (); ?> समय जब इसे पोस्ट किया गया था

अंतिम परिणाम

इसे comments.php में डालने से आप कमैंट्स के साथ एक आर्डर लिस्ट और आवश्यक जानकारी या यह बताते हुए मैसेज प्रदर्शित कर सकते हैं कि कोई कमेंट नहीं है।


4. कमेंट फॉर्म

क्या आप अभी भी मुझे फॉलो कर रहे हैं? अच्छा है! हम बस पहुँच ही गए हैं। हमें उस कमेंट फॉर्म को प्रोसेस करने की आवश्यकता है... ठीक है, शायद मैंने झूठ बोला की हम लगभग पहुँच गए हैं। कमेंट फॉर्म वास्तव में पुरे comments.php की स्किन फ़ाइल के कठिन भागों में से एक है।

आप कई कंडीशनल स्टेटमेंट्स के साथ बोम्बार्ड हो जाएंगे (क्या लॉग इन आवश्यक है, क्या आप में लॉग इन हैं, ...)। यह हिस्सा है जहां सबसे शुरुआती स्किनर्स को सबसे अधिक परेशानी होती है: फॉर्म एलिमेंट्स को मिसप्लेसिंग करना किसी विशिष्ट PHP error के बिना, फार्म को काम करने से रोक सकता है।

आपको कमेंट फॉर्म में शामिल कंडीशनल स्टेटमेंट्स में एक अंतर्दृष्टि (insight) प्रदान करने के लिए, मैं सबसे पहले उन स्टेटमेंट्स को समझाता हूं, और बाद में HTML को शामिल करता हूँ और समझाता हूं कि यह क्यों होना चाहिए यह जहाँ है वहां क्यों होना चाहिए।

कंडीशनल स्टेटमेंट का अवलोकन (overview)

पहली कंडीशनल स्टेटमेंट जिसका आप सामना करेंगे वो है <?php if(comments_open()) : ?>। यह मूल रूप से जांचता है कि क्या कमैंट्स ओपन हैं। जाहिर है, अगर कमैंट्स बंद होते हैं, तो आप एक कमेंट पोस्ट नहीं कर सकते हैं और कमेंट फॉर्म की आवश्यकता नहीं है। यदि कमेंट बंद हैं तो आप <?php else : ?> और
<?php endif; ?> के बीच मैसेज को डाल सकते हैं जिसे आप दिखाना चाहते हैं।

दूसरी कंडीशनल स्टेटमेंट (<?php if(get_option('comment_registration') && !$user_ID) : ?>) जांचती है कि क्या आपको एक कमेंट पोस्ट करने के लिए रजिस्टर होने की आवश्यकता है और क्या आप लॉग इन हैं। अगर कंडीशनल स्टेटमेंट पूरी होती है, तो स्क्रिप्ट उस जगह पर एक लिंक को दिखाती है जहां यूजर लॉग इन कर सकते हैं। यदि रजिस्ट्रेशन की आवश्यकता नहीं है या आप पहले ही लॉग इन हैं, तो स्क्रिप्ट else भाग के साथ जारी रहेगी और फ़ॉर्म प्रदर्शित करेगी।

हमारी अंतिम कंडीशनल स्टेटमेंट तब जांचती है कि क्या आप लॉग इन हैं या नहीं। जाहिर है, अगर आप पहले ही लॉग इन कर चुके हैं तो आपको अपना नाम, ईमेल और वेबसाइट फिर से भरने की जरूरत नहीं है।

फ़ॉर्म को इन्सर्ट करना

बधाई हो, हमने comments.php फ़ाइल में सभी कंडीशनल स्टेटमेंट्स को करके देख लिया है। अब, जो छूट गया है वह वहां फॉर्म को जोड़ना है।

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

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

ठीक है! हम बस पहुँच गए हैं! हमें सिर्फ कुछ सरल कोड की लाइनों को जोड़ना है जैसे एक textarea और एक सबमिट बटन। ये अंतिम कंडीशनल स्टेटमेंट के बाद जाते हैं, क्योंकि इन एलिमेंट्स के लिए यह अप्रासंगिक (irrelevant) है यदि आप लॉग इन हैं या नहीं।

यह कोड बहुत आत्म-व्याख्यात्मक (self-explanatory) हैं। कमेंट के लिए एक textarea फील्ड, एक सबमिट बटन, एक hidden इनपुट फ़ील्ड कमेंट की फ्यूचर ID के साथ और एक PHP स्निपेट (<?php do_action('comment_form', $post->ID); ?>) वर्डप्रेस को आवश्यक है कमेंट फॉर्म फ़ंक्शन बनाया जाए।

देखा! बस आज के लिए इतना ही! अब आपके पास पूरी तरह से तैयार comments.php फाइल हैं। इस फाइल को सभी आवश्यक PHP और HTML कोड प्राप्त करने के लिए देखें। आपको इस के साथ समाप्त होना चाहिए (मैं बस डिफ़ॉल्ट स्किन की comments.php को हमारी वाली के साथ बदल देता हूँ और इसके लिए कुछ मामूली स्टाइल जोड़ता हूँ।)

Comments preview

5. कुछ छोटे ट्रिक्स

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

Gravatars

वर्डप्रेस 2.5 की तरह, gravatars को एम्बेड करने के लिए एक कस्टम वर्डप्रेस टेम्प्लेट टैग यहाँ भी है। यह विजिटर के द्वारा दर्ज किये गए ईमेल से gravatar को निकालता है। यह करने के लिए कोड बहुत आसान है।

आप $author_email को निफ्टी get_comment_author_email() फंक्शन के साथ बदल सकते हैं फ़ंक्शन, $size अवतार की ऊँचाई (और चौड़ाई) है और $default_avatar डिफ़ॉल्ट अवतार इमेज के लिए एक लिंक है (तब प्रदर्शित होता है जब कमेंट करने वाले का कोई gravatar नहीं है)।

इस कोड को foreach लूप के अंदर डालें जो कमैंट्स को प्रदर्शित करता है। आउटपुट क्लास avatar और avatar-$size वाली एक इमेज होती है (जहां $size आपके द्वारा निर्दिष्ट किया गया आकार है)। कुछ मामूली CSS एडिट करने के साथ, आप कुछ इस तरह से अपने कार्य की समाप्ति तक पहुंचेंगे:

Comment Gravatars

नंबर्स के कमेंट

मैंने जानबूझकर comments.php फ़ाइल में हेडर छोड़ दिए, जो हमने बाद में बनाया था, क्योंकि मेरा मानना है कि वे सीखने की प्रक्रिया में अतिरिक्त कोड हैं, जो कि बहुत मुश्किल है क्योंकि यह है। जाहिर है, मैं हालांकि उन्हें नहीं भूल रहा हूँ।

आम तौर पर, लोग हैडिंग डिस्प्ले करते हैं जो कुछ इस तरह होती है "3 comments so far"। वर्डप्रेस द्वारा ऑफ़र किये गए टेम्पलेट टैग्स का धन्यवाद जिसकी वजह से यह बहुत आसान है।

यह बहुत आत्म-व्याख्यात्मक (self-explanatory) है: $zero_comments वो टेक्स्ट है जिसे तब डिस्प्ले करते हैं जब कोई कमेंट नहीं होता, $one_comment तब जब एक कमेंट होता है और $more_comments तब जब एक से अधिक कमैंट्स होते हैं। एक वास्तविक जीवन का उदाहरण इस तरह होगा:

मैंने मल्टीप्ल कमैंट्स के लिए % का उपयोग किया, चूंकि comments_number फ़ंक्शन तब कमेंट की संख्या के साथ % को बदलता है (2, 3, ...)

हमारे comments.php फ़ाइल में प्रयुक्त, आप कुछ इस तरह से समाप्त करेंगे:

Comment numbers

कमैंट्स के हिस्से के लिंक को दिखने के लिए (साथ ही साथ प्रदर्शित कमैंट्स की संख्या के साथ), आप केवल निम्नलिखित कोड का उपयोग करें।

इस फ़ंक्शन के पहले 3 पैरामीटर्स उपरोक्त comments_number फ़ंक्शन के समान ही हैं। $css_class, जाहिर है, css क्लास है जिसे आप <a> टैग को देते हैं और $comments_closed वह टेक्स्ट है, जिसे कमेंट बंद होने पर प्रदर्शित किया जाना चाहिए। जब किसी थीम पर इसे लागू करते हैं, तो इसका उपयोग करने का यह एक संभावित तरीका है।

यह तब आपको क्लास comments-link के साथ एक लिंक देगा

कमैंट्स एडिट करना

कभी-कभी आप तुरंत कमेंट एडिट करना चाहेंगे। सौभाग्य से, edit_comment_link फ़ंक्शन के साथ, आप आसानी से उस कमेंट को एडिट करने के लिए सही स्थान पर जा सकेंगे, बजाय इसके की पहले एडमिन पैनल पर उसे कमेंट में जाना पड़े। उपयोग इस प्रकार है:

आपको इसे foreach कमेंट लूप के अंदर रखना होगा। पैरामीटर काफी स्पष्ट हैं: $link_text एडिट लिंक के लिए एंकर टेक्स्ट है, $before_link और $after_link क्रमशः लिंक से पहले या बाद में प्रदर्शित करने के टेक्स्ट या कोड हैं।

यह वास्तव में एक कमेंट को चेंज करना आसान बनाता है; आप बस अपनी कमेंट मेटा इनफार्मेशन में एक छोटा सा 'Edit' लिंक जोड़ सकते हैं (केवल एडमिन द्वारा देखा जा सकता है)। यह कुछ ऐसा दिख सकता है:

Comment Edit Link

कमैंट्स के लिए वैकल्पिक रंग

यह संभव है कि आप अपने कमैंट्स के लिए वैकल्पिक रंगो कि row को लगाना चाहे, ताकि साफ़ साफ़ इन्हे अलग किया जा सके। यह करना अपेक्षाकृत आसान है। सबसे पहले, निम्न कोड को पेज के शीर्ष पर जोड़ें:

उसके बाद निम्नलिखित को foreach लूप (फिर से) में जोड़ें। आप बस <li id="comment-<?php comment_ID(); ?>"> को इस के साथ बदल सकते हैं:

यह हर दूसरे कमेंट को alt क्लास दे देगा, जिससे CSS के माध्यम से इसकी दिखावट को बदलना संभव होता है।

मैंने इसके लिए एक फ़ंक्शन बनाने का निर्णय लिया, अपनी वास्तविक थीम फ़ाइल में कम हलचल करने के लिए। यदि आप चाहें तो फ़ंक्शन डेफिनिशन को अपने functions.php फ़ाइल में जोड़ सकते हैं, लेकिन यह अधिक समझ वाला होगा, मेरे लिए, कि यह आपके पेज के शीर्ष पर हो।

वैकल्पिक लाइन्स अलग-अलग कमैंट्स को अलग करना आसान बनाती हैं; एक बार यह इम्प्लीमेंट कर दी जाए तो यह कुछ इस तरह दिखेगी:

alternate color comments

स्वीकृत टैग्स को प्रदर्शित करना

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

इसके बाद आप अपने कमैंट्स में ऐसे टैगों की एक लिस्ट प्राप्त कर लेंगे जिनकी अनुमति है, कुछ इस प्रकार:

allowed tags

कमैंट्स के RSS लिंक

किसी खास पोस्ट की कमैंट्स के लिए RSS फ़ीड के लिए एक लिंक प्राप्त करने के लिए, नीचे दिए गए कोड को नीचे अपनी comments.php फ़ाइल में उस जगह पर डालें जहां आप चाहते हैं कि यह होना चाहिए।

फिर RSS लिंक के लिए एंकर टेक्स्ट के साथ $link_test को रेप्लस करें।

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

comments rss link

6. निष्कर्ष

मुझे आशा है कि आपने अपने WordPress की comments.php फ़ाइल को स्किनिंग करने के बारे में *ahem* का यह छोटा लेख एन्जॉय किया होगा। आप दिए गए ट्रिक्स के साथ यहां पूरे कोड प्राप्त कर सकते हैं:

  • Gravatars,
  • वैकल्पिक लाइन का रंग,
  • लिंक एडिट करना,
  • RSS लिंक के कमैंट्स

जाहिर है, कमेंट लिंक शामिल नहीं है क्योंकि इसका इस्तेमाल लूप के अंदर किया जाना है।

आपके वर्डप्रेस स्किनिंग एडवेंचर्स की शुभकामनाएं!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.