कस्टम वर्डप्रेस मैसेजिंग सिस्टम बनाना, भाग 1
Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)
इस साल की शुरुआत में हमने वर्डप्रेस में कस्टम एडमिनिस्ट्रेशन पेज बनाने की प्रक्रिया को शामिल करने वाले ट्यूटोरियल्स की एक श्रृंखला के माध्यम से काम किया। यद्यपि यह श्रृंखला अनिवार्य रूप से कंटेंट के लिए एक prerequisite है जिसे हम कवर करने वाले हैं, इसकी समीक्षा करने में उसे चोट नहीं पहुंचेगा।
आउट ऑफ़ द बॉक्स, वर्डप्रेस कई API के माध्यम से कई फंक्शनलिटी प्रदान करता है। यदि, उदाहरण के लिए, आप यूजर को प्रस्तुत करने वाले ऑप्शंस पर ध्यान केंद्रित करके एडमिनिस्ट्रेशन पेजेज को प्रस्तुत करने पर काम करना चाहते हैं, तो आप ऐसा सेटिंग API का उपयोग करके कर सकते है।
इस खास API को चुनने के कई फायदे भी हैं इनमें से कुछ में शामिल हैं: इनमे से कुछ हैं:
- sanitization और वेलिडेशन
- कस्टम मेनू आइटम
- एडमिनिस्ट्रेशन पेजेज को शुरू करने में आसानी
- विभिन्न प्रकार के इनपुट के साथ काम करना
- सफलता या विफलता पर ऑटोमेटेड संदेश
- और भी बहुत कुछ
लेकिन जैसा कि हमने कस्टम एडमिनिस्ट्रेशन पेजेज बनाने का तरीका देखा, सिस्टम को लागू करना भी संभव है जो कि हमें अपने कस्टम संदेश, उनके प्रकार, और उन्हें एडमिनिस्ट्रेशन पेजेज पर कब और कहां प्रदर्शित करने की अनुमति देता है।
इसलिए उपरोक्त श्रृंखला के रूप में एक ही थीम के साथ जारी रखने में, हम एडमिन्सिट्रेशन पेजेज के लिए अपनी कस्टम मैसेजिंग सिस्टम बनाने का तरीका देखेंगे। ऐसा करने के लिए, हम कॉन्सेप्ट्स को प्रदर्शित करने के लिए एक प्लगइन तैयार करने जा रहे हैं, हम वर्डप्रेस के साथ कस्टम हुक दर्ज करने जा रहे हैं, और हम यह भी देखेंगे कि कैसे उन्हें लागू किया जाए, साथ ही साथ।
जैसा कि मैंने उल्लेख किया है, पिछले ट्यूटोरियल जरूरी नहीं कि इस श्रृंखला के लिए एक शर्त है, लेकिन यदि आप ऊपर उल्लेखित कुछ भी करने के लिए नए हैं, तो कृपया श्रृंखला की समीक्षा करने के लिए कुछ समय दें, क्योंकि यह दिशा के लिए एक नींव देगा जिसमें हम बढ़ रहे हैं।
यह कह कर, चलो शुरू करें।
इस श्रृंखला के लिए आपको क्या आवश्यकता होगी
यदि आपने मेरे पिछले ट्यूटोरियल्स को पढ़ा है, तो आप जानते हैं कि मैं दो चीजों के साथ प्रत्येक ट्यूटोरियल (या सीरीज भी) शुरू करना चाहता हूं:
- सॉफ्टवेयर की एक सूची जिसकी आपको आरंभ करने के लिए आवश्यकता होगी।
- जहां हम आगे बढ़ते हैं, वहां का एक रोडमैप ताकि आप यह तय कर सकें कि आप श्रृंखला के साथ आगे बढ़ना चाहते हैं या नहीं।
चलिए अब ऐसा करते हैं।
आपका डेवलपमेंट एनवायरनमेंट
आम तौर पर बोलते हुए, यह वह प्रोजेक्ट है जिसकी शुरुआत हम निर्माण करने जा रहे हैं।
- PHP 5.6.25
- MySQL 5.6.28
- Apache (या Nginx अगर आप उस के साथ कम्फर्टेबले है)
- WordPress 4.6.1
- आपका पसंदीदा एडिटर या IDE
यदि आप इस बारे में उत्सुक हैं कि यह सब कैसे एक साथ फिट बैठता है, तो मैं इस श्रृंखला को पढ़ने की सलाह देता हूं।
मैं आम तौर पर एक सॉफ्टवेयर के एक हिस्से की सिफारिश नहीं करता हूँ क्योंकि दूसरे के मुकाबले बेहतर है क्योंकि बहुत सारे ऑप्शन हैं, लेकिन अगर आप इनमें एकदम नए है तो में MAMP के फ्री वर्जन की सिफारिश करता हूं। यह macOS और विंडोज के साथ कम्पेटिबल है, इसलिए यह आपके कई सेटअपों के साथ कम्पेटिबल होना चाहिए। इसका उपयोग करना आसान है, आरंभ करने में आसान है, और आपको इनस्टॉल के लिए आवश्यक सभी चीजें प्रदान करता है।
हमारा रोडमैप
यह कहते हुए, यह इस श्रृंखला का अस्थायी ब्रेकडाउन है:
- इस ट्यूटोरियल में, हम अपने प्लगइन का न्यूनतम ग्राउंड वर्क करने जा रहे हैं और साथ ही हमे जिस भी चीज की शुरुआत करने के लिए जरूरत है।
- दूसरे टुकड़े में, हम एक बहुत ही बुनियादी वर्डप्रेस एडमिनिस्ट्रेशन पेज को जोड़कर प्लगइन को थोड़ा और आगे ले जाएंगे। हम कस्टम हुक को भी कॉल करने जा रहे हैं जो हम उपयोग करेंगे, और हम उस सर्वर-साइड पर वायर अप करेंगे। हम अपने सेटिंग्स मेसेंजर के आधार पर भी शुरूआत करेंगे।
- अगले ट्यूटोरियल में, हम errors और success मैसेज के साथ-साथ सुरक्षा के कुछ बिंदुओं को कवर करने के साथ हमारे सेटिंग्स मैसेंजर को लागू करने से शुरू करेंगे।
- हम सब कुछ एक साथ बांधकर, एक्शन में देखकर और अंतिम प्लगइन को आपके लिए डाउनलोड करने के लिए सार्वजनिक रूप से उपलब्ध कराने के साथ समाप्त कर देंगे।
ध्यान दें कि प्रत्येक ट्यूटोरियल में डाउनलोड करने योग्य स्रोत फ़ाइलों को शामिल किया जाएगा; हालांकि, वे जरूरी नहीं की उसमे पूर्ण सोर्स फाइल ही हो उसमे शायद डॉक्यूमेंटेशन या कोई अन्य नोट शामिल नहीं होगा। आखिरकार टुटोरिअल इसी के बारे में तो है।
लेकिन उपलब्ध कराए गए अंतिम वर्जन में यह बिल्कुल शामिल होगा।
प्लगइन प्रारंभ करना
अभी, हम जानते हैं कि हमें अपने प्लगइन के लिए निम्नलिखित चीजों की आवश्यकता होगी:
- एक बुनियादी एडमिनिस्ट्रेशन पेज
- एक मेनू आइटम हमें एडमिनिस्ट्रेशन पेज पर ले जाने के लिए
- प्लगइन प्रारंभ करने के लिए एक बूटस्ट्रैप फ़ाइल
तो चलिए उन सभी टुकड़ों को एक साथ और फंक्शनल बनाते हैं।
1. मेनू आइटम
पहली चीज जो हम करना चाहते हैं, वह फंक्शनलिटी प्रस्तुत करती है जो वर्डप्रेस एडमिनिस्ट्रेशन नेविगेशन मेनू में Options मेनू में सबमेनू आइटम जोड़ देगा।
ऐसा करने के लिए, हमें दो क्लास और एक फ़ाइल की आवश्यकता है: एक क्लास जो सबमेनु प्रदर्शित करेगा, एक क्लास जो सबमेनु के पेज को प्रदर्शित करेगी, और एक फ़ाइल जो पेज के कंटेंट को प्रदर्शित करेगी।
ऐसा करने से पहले, मैं निम्नलिखित डायरेक्टरी संरचना की सिफारिश करता हूं:



इसका अर्थ है कि admin
डायरेक्टरी में एक views
नाम की सब-डायरेक्टरी होगी। admin
डायरेक्टरी में class-submenu.php
और class-submenu-page.php
होगी। अगले सेक्शन में हम एडमिनिस्ट्रेशन पेज के बारे में बात करेंगे।
सबसे पहले, हम उन प्रत्येक व्यक्तिगत फाइल को देखें।
class-submenu.php
यह क्लास मेनू आइटम को जोड़ने के लिए ज़िम्मेदार है:
1 |
<?php
|
2 |
|
3 |
class Submenu { |
4 |
|
5 |
private $submenu_page; |
6 |
|
7 |
public function __construct( $submenu_page ) { |
8 |
$this->submenu_page = $submenu_page; |
9 |
}
|
10 |
|
11 |
public function init() { |
12 |
add_action( 'admin_menu', array( $this, 'add_options_page' ) ); |
13 |
}
|
14 |
|
15 |
public function add_options_page() { |
16 |
|
17 |
add_options_page( |
18 |
'Tuts+ Custom Messages', |
19 |
'Tuts+ Custom Message Example', |
20 |
'manage_options', |
21 |
'tutsplus-custom-messages', |
22 |
array( $this->submenu_page, 'render' ) |
23 |
);
|
24 |
}
|
25 |
}
|
अगर आपने कोडेक्स में API call को पढ़ा है, तो आप देखेंगे कि यह Tools मेनू में एक मेनू आइटम पेश करेगा जो कि "Tuts+ कस्टम मैसेज" के जरिए पहुंच योग्य होगा और यह एक टाइटल के साथ होगा जिसे हम क्षणभर देखेंगे।
यह भी नोट करें कि एक init
मेथड है। यह फ़ंक्शन वर्डप्रेस पेज के जीवन चक्र के दौरान add_options_page
को WordPress के admin_menu
हुक के साथ रजिस्टर करता है ताकि वह ठीक से रजिस्टर हो जाए (और प्रदर्शित किया जा सके)।
दूसरे, इस मेनू को कोई भी manage_options
की क्षमता के साथ एक्सेस कर सकता है, और यह उस submenu_page
पर रेंडर विधि को कॉल करेगा जो इसके अंतर्गत आता है।
समस्या? कोई सबमेनू पेज नहीं है। तो चलो अब उस क्लास को बनाते हैं।
class-submenu-page.php
इस क्लास के लिए कोड नीचे दिए गए है:
1 |
<?php
|
2 |
|
3 |
class Submenu_Page { |
4 |
|
5 |
public function render() { |
6 |
include_once( 'views/settings.php' ); |
7 |
}
|
8 |
}
|
Submenu_page
क्लास स्पष्ट रूप से सरल है। यह सभी settings.php
पेज प्रदर्शित करता है, जो हम एक पल में समीक्षा करेंगे।
ध्यान दें कि सभी सबमेनु पेजेज आसान नहीं होंगे; हालांकि, हमारे प्लगइन की जटिलता अभी आणि बाकी है। हम इसे भविष्य के पोस्ट में देखेंगे।
2. एडमिनिस्ट्रेशन पेज
जैसे की Submenu_page
सरल था, वैसे ही सेटिंग पेज है। वास्तव में, यदि आप बेसिक मार्कअप से परिचित हैं, तो यह समझने में आसान होना चाहिए कि क्या हो रहा है:
1 |
<div class="wrap"> |
2 |
|
3 |
<h1><?php echo esc_html( get_admin_page_title() ); ?></h1> |
4 |
|
5 |
<p class="description"> |
6 |
We aren't actually going to display options on this page. Instead, we're going |
7 |
to use this page to demonstration how to hook into our custom messenger. |
8 |
</p><!-- .description --> |
9 |
</div><!-- .wrap --> |
संक्षेप में, यह केवल वर्डप्रेस में एक मैसेज प्रदर्शित करता है कि हम इस पेज का उपयोग कस्टम संदेशों को प्रदर्शित करने के अलावा अन्य किसी भी चीज़ के लिए नहीं कर रहे हैं।
आखिरकार, हम यही कर रहे होंगे।
3. जीवंत करना
इस बिंदु पर, हम प्लगिन को मोशन में सेट करने के लिए बूटस्ट्रैप फ़ाइल सेट अप करने को तैयार हैं। यहां बेसिक बूटस्ट्रैप फ़ाइल है:
1 |
<?php
|
2 |
/**
|
3 |
* The plugin bootstrap file
|
4 |
*
|
5 |
* @link TODO
|
6 |
* @since 1.0.0
|
7 |
* @package TutsPlus_Custom_Messaging
|
8 |
*
|
9 |
* @wordpress-plugin
|
10 |
* Plugin Name: Tuts+ Custom Messaging Example
|
11 |
* Plugin URI: TODO
|
12 |
* Description: Import your employee directory as users manually or automatically, populate employees' birthdays and anniversaries into a CPT, and create a front-end directory page.
|
13 |
* Version: 0.1.0
|
14 |
* Author: Tom McFarlin
|
15 |
* Author URI: https://tommcfarlin.com
|
16 |
* License: GPL-2.0+
|
17 |
* License URI: https://www.gnu.org/licenses/gpl-2.0.txt
|
18 |
*/
|
19 |
|
20 |
// If this file is called directly, abort.
|
21 |
if ( ! defined( 'WPINC' ) ) { |
22 |
die; |
23 |
}
|
24 |
|
25 |
// We *could* use an autoloader here but I'm not sure everyone has read the series.
|
26 |
foreach ( glob( plugin_dir_path( __FILE__ ) . 'admin/*.php' ) as $file ) { |
27 |
include_once $file; |
28 |
}
|
29 |
|
30 |
add_action( 'plugins_loaded', 'tutsplus_custom_messaging_start' ); |
31 |
/**
|
32 |
* Starts the plugin.
|
33 |
*
|
34 |
* @since 1.0.0
|
35 |
*/
|
36 |
function tutsplus_custom_messaging_start() { |
37 |
|
38 |
$plugin = new Submenu( |
39 |
new Submenu_Page() |
40 |
);
|
41 |
|
42 |
$plugin->init(); |
43 |
}
|
foreach
लूप के ऊपर कमेंट को ध्यान रखें। हालांकि हमने पिछली सीरीज़ में ऑटो लोडिंग को कवर किया है, मुझे यह नहीं मानना है कि किसी ने भी इस विशेष एक के लिए अग्रणी सभी श्रृंखला पढ़ी है।
एक बार इसके प्लेस हो जाने के बाद, आप अपने वर्डप्रेस अकाउंट में लॉग इन कर लें, प्लगइन को एक्टिव करने, और निम्न स्क्रीन को देखें:



यदि नहीं, तो अपने सभी सोर्स कोड को जो इस पोस्ट के साथ जुड़े हुए हैं को जांचे और यह सत्यापित करें कि सब कुछ ठीक उसी तरह है जैसा इसे होना चाहिए।
यदि नहीं, तो आवश्यक सुधार करें और पुन: प्रयास करें। अगर इसके कुछ कोशिश लगाती है, तो घबराएं नहीं। प्रोग्रामिंग समय समय पर एक निराशाजनक काम हो सकती है, खासकर जब आप बस आरंभ कर रहे हैं।
निष्कर्ष
यदि आप इस समय तक मेरे अधिकांश काम को फॉलो करते आ रहे हैं, तो यह बहुत अधिक परिचित लग सकता है। अगर नहीं, तो मुझे आपके बोर्ड पर होने की प्रसन्नता है। जब आप तक दूसरे ट्यूटोरियल की प्रतीक्षा कर रहे हैं, तो मैं सलाह दूंगा की मेरे द्वारा पब्लिश किये गए कुछ और मटेरियल को चेक करें। इससे आपको पता चलेगा की मैं क्या बता रहा हूँ और मेरे इस कांसेप्ट को पड़ने का तरीका कैसा है।
मैं हमेशा कमैंट्स के माध्यम से सवालों के जवाब देने में खुश हूं, और आप मेरे ब्लॉग को देखने और ट्विटर पर मुझे फॉलो करने के लिए बेझिझक महसूस कर सकते हैं। मैं आमतौर पर वर्डप्रेस और स्पर्शरेखा विषय के भीतर सॉफ्टवेयर डेवलपमेंट के बारे में सभी बात करता हूं।
अगले ट्यूटोरियल तक, कोड का अध्ययन करें, फ़ाइलें डाउनलोड करें और देखें कि यह आपकी स्थानीय मशीन पर कैसे चलता है। अगले भाग में, हम ठीक से उठाएंगे जहां हमे इसे छोड़ रहे हैं।