خانه / مقالات اموزشی / طراحی وب سایت / اموزش طراحی افزونه وردپرس

اموزش طراحی افزونه وردپرس

آموزش ساخت افزونه وردپرس

پيش نياز اين قسمت تسلط متوسط روي زبان پي اچ پي هستش که اگه بلد نيستيد مي تونيد از منوي دانلود
توي صفحه اصلي دانلودش کنيد.
خب ديگه اول از معرفي توابع خدمتون شروع ميکنم تا اخر
اساس کار پلاگین ها بر پایه مفهومی به نام Hook هست. حالا این هوک چی هست؟
همونطور که از اسمش معلوم هست، ما توسط هوک ها میایم و به نقاط مختلف برنامه مون قلاب میندازیم و گیرشون میندازیم
به زبان فنی تر، Hook ها قسمت های خاصی از هسته وردپرس هستن که از پیش توسط سازندگان اون تعبیه شدن
و این اجازه رو میدن که ما برنامه نویس ها، در زمان های خاصی که همون Hook ها باشن، بهشون قلاب بندازیم و کار خاصی رو انجام بدیم.
مثلا ما توسط Hook ها می تونیم زمان دقیق لاگین شدن کاربر رو بفهمیم و بیایم پس از لاگین شدنش یک کار خاصی انجام بدیم.
مثلا ایمیل بهش بزنیم.
یا مثلا بیایم تعریف کنیم، هرگاه پستی نمایش داده شد، به انتها پست، اطلاعات نویسنده رو درج کن
یا مثلا به ابتدای پست یک جعبه پیام یا هشدار اضافه کن که قرمز رنگ هم باشه!یا مثلا بگیم هر موقع میخواستی عنوان پست رو در مرورگر نمایش بدی،
اگر توش لغت Zeryan بود، اونو تبدیل کن به زريان و سپس نمایشش بده…
وردپرس پر از Hook هست و شما به عنوان توسعه دهنده می بایست دائما هوک ها رو مرور کنین.
ليست تمامي هوک هاي وردپرس :

http://codex.wordpress.org/Plugin_API

ما در وردپرس، دو نوع Hook داریم. یکیش اسمش Action هست و یکی دیگه هم Filter
لیست فیلترها اینجاست :

http://codex.wordpress.org/Plugin_API/Action_Reference

لیست اکشن ها هم اینجاست :

http://codex.wordpress.org/Plugin_API/Filter_Reference

حالا اینا چی هستن؟ فیلتر اسمش روش هست. ما به چی میگیم فیلتر؟
به چیزی که یه چیزی رو به عنوان ورودی میگیری، بعد یک سری چیزهاشو نگه میداری و پالایش میکنه و بعد اون چیز پالایش شده رو به عنوان خروجی بر میگردونه.
ساده است نه؟ فقط دقت کنین که فیلتر یک ورودی داره و یک خروجی. فیلتر بدون ورودی خروجی معنا نداره!
با این مقدمه میریم سراغ توضیح اکشن و فیلتر.
بازهم تاکید میکنم، هوک یک مفهوم بود. اکشن و فیلتر هرکدومشون هوک محسوب میشن.
با مثال براتون توضیح میدم، فرض کنید میخوایم هر موقع کاربری لاگین کرد، به ادمین ایمیل بره.
این یک رویداد هست درسته؟ رویداد چی هست؟ رویداد لاگین شدن کاربر. ورودی داره این رویداد؟ خیر! صرفا میگه یکی وارد شد و هوک وارد شدن کاربر فعال میشه.
حالا اگه ما به اونجا قلاب انداخته باشیم، زمانیکه کاربر لاگین میکنه، وردپرس بلندگو رو بر میداره میگه آی یکی لاگین شد.
ما هم سریعا میپریم و به ادمین ایمیل میزنیم. به این میگن اکشن. ما یک اکشن انجام دادیم! دیدیم یکی لاگین رفته (لغت رفته مخصوص مشهدی هاست
شما بخونین لاگین شده) و بعد اکشنی انجام دادیم و پریدیم به ادمین سریع ایمیل زدیم، اوکی؟
حالا فرض کنین همین کاربر داره رجیستر میکنه، اینبار ما میایم به یک رویدادی هوک میندازیم که یکمی ماهیتش فرق میکنه.
مثلا میگیم اگر در ایمیلی که کاربر میخواد باهاش عضو بشه، لغت gmaail هست، اون رو تبدیل کن به gmail (به غلط املایی توجه کنین).
اینجا داریم چیکار میکنیم؟ آفرین داریم فیلتر میکنیم
یعنی یک چیزی به عنوان ورودی گرفتیم، و بعد رفتیم پالایشش کردیم و خروجی دادیم.
در وردپرس، بسته به ماهیت رویداد، اومدن فیلتر و یا اکشن برای اون رویداد تعریف کردن
برای همین شما وقتی میخواین به یک جایی قلاب بندازین، باید اول ببینید ماهیتش ورود خروجی هست یا صرفا واکنشی هست؟
اگر ورود خروج بود باید برین اول تو لیست فیلترهای وردپرس که لینکش رو قبل تر براتون درج کردیم،
بگردین و ببینید چیزی متناسب کاری که میخواین پیدا میکنین یا نه؟ اگه نبود بعد توی اکشن ها هم بگردین.
یک مثال دیگه:
دیدین توی قالب ها در قسمت هدر از wp_head() استفاده میکنن؟ این یک هوک هست.
اگه اینو تو قالب نذارین، خیلی از پلاگین ها کار نمیکنن. جنسش بنظرتون چی هست؟ اکشن یا فیلتر؟
بله درست حدس زديد اين تابع يه اکشن.
در قسمت هاي بعدي کم کم با بعضي توابع وردپرس نيز آشنا ميشيم.
اما قبل از اين که به بخش هاي بعدي بريم اول بايد با ساختار افزونه ها آشنا بشيم و البته
با يه مثال ساده
افزونه هاي وردپرس با نوشته هاي زير شروع ميشن :

Plugin Name: My Plugin
Plugin URI: http://Zeryan.ir
Description: Plugin description in a few words or more
Version: Version number such as 2.3
Author: Zanyar Hasani (if you wrote it)
Author URI: http://Zanyarhasani.ir
License: GPL (or whatever license terms you choose)
قسمت اول (Plugin Name) همونطور که از اسمش معلومه نام افزونه مورد نظره
در قسمت Plugin URI اغلب وب سايت سازنده افزونه مورد نظر رو مينويسند
در قسمت Description توضيحات مختصري راجبه افزونه
Version يا نسخه افزونه هم که ديگه معلومه براي مثال وقتي يه افزونه براي اولين بار نوشته ميشه
نسخه اون رو ميزنن ۱ يا ۱٫۱ و هربار که به روز ميشه (يعني دوباره بررسي ميشه يا امکاناتي بهش اضافه ميشه)
ورژن افزونه رو بالا ميبرن
در قسمت Author هم همونطور که از اسمش پيداست بايد نام کدنويس افزونه رو بنويسيم که براي مثال اينجا من
اسم خودمو گذاشتم.
Author URI هم اغلب آدرس وب سايت کدنويس افزونه هستش
خط آخرم هم ميتونه باشه يا نباشه.اين خط فقط مينويسه که اين افزونه تحت لايسنس GPL هستش و کساني
که ازش استفاده ميکنن حق ندارن در سورس اصلي برنامه دست ببرن و يا اينکه اونو به نام خوشون ثبت کنن
البته اينم بگم که تمامي قسمت هاي بالا به جز “نام پلاگين” رو ميشه اصلا ننوشت
حالا که به يه آشنايي کلي از افزونه رسيديم اول يه مثال بزنم و بعد بريم بخش دوم.
مثال :

در مثال بالا ما يه افزونه به اسم Replacer يا جايگذين کننده نوشتيم.اول مشخصات ابتدايي افزونه رو نوشتيم
مثل نام افزونه و نام نويسنده و …
بعدشم به تابع به اسم “taviz” ساختيم که اين تابع هرکجاي متن کلمه “dog” رو ببينه با “cat” جايگذين ميکنه
به همين سادگي !
آموزش ساخت افزونه وردپرس بخش دوم

تابع register_activation_hook

اين تابع وقتي افزونه رو فعال ميکنيد ، صدا زده ميشه
دو آرگومان ميگيره اولي ، فايل افزونه است که با ثابت __FILE__ مقدار دهي ميشه
و آرگومان دوم نام تابعي هست که قراره کاري رو با نصب افزونه برامون انجام بده . مثال :

تابع register_deactivation_hook

ين تابع عکس تابع قبليه ، وقتي افزونه غيرفعال ميشه ، اين تابع صدا زده ميشه .
دو آرگومان ميگيره ، اولي فايل افزونه است که با ثابت __FILE__ مقدار دهي ميشه ،
و دومي نام تابعي که قراره کاري رو با غيرفعال کردن افزونه انجام بده ، مثلاً حذف جدولهاي ديتابيس افزونه يا يک آپشن . مثال :

تابع add_filter

اين تابع اکشني رو بر يکي از توابع وردپرس وارد ميکنه ، مثلاً وقتي يک افزونه نصب ميکنيد
و لازم است فايل استايل افزونه در قالب فراخواني بشه يک اکشن به تابع wp_head ميزنيد .
دو آرگومان ميگيره ، اولي اسم تابعي که قراره اکشن روش انجام بشه ،
دومي اسم تابعي که کار اکشن رو انجام ميده . مثال :

تابع is_admin

اين تابع در صورتي که کاربر لاگين کرده مدير باشد مقدار ۱ را برميگرداند و در غير اينصورت مقدار ۰ .
بدون آرگومان . مثال :

تابع add_menu_page

اين تابع همونطور که از اسمش پيداست يک صفحه جديد به منوي وردپرس اضافه ميکنه براي تنظيمات افزونه .
آرگومان ميگيره ، به ترتيب عنوان صفحه افزونه ، نام عنوان منو ، سطح دسترسي به افزونه ،
آدرس کوئري استرينگ دسترسي ، تابع نمايش محتواي صفحه افزونه ، يک آيکن براي منو . مثال :
* لازم به ذکره اين تابع بايد داخل يک تابع ديگه که عمل اکشن رو به admin_menu ميده انجام بشه .

آپشنها (ذخيره و تغيير اطلاعات در ديتابيس جدول wp_options )

اگر به ديتابيس وردپرس بريد و جدول wp_options رو نگاهي بندازيد ميبينيد
که اين جدول شامل يک سري کليد در فيلد option_name و يک سري مقدار در فيلد option_value هست .
اينها اطلاعاتي هستن که توسط خود وردپرس و توسط افزونه ها اينجا ثبت ميشن تا در سايت استفاده بشن .
مثلاً تابع get_option با توجه به کليد ، مقدار رو از ديتابيس ميگيره ، مثلاً دستور زير آدرس سايت رو نشون ميده .

الان وقتشه ۴ تابع کار با جدول آپشن ها رو معرفي کنم ، اين توابع در افزونه ها و فرم هاي افزونه ها و صفحه تنظيمات قالب استفاده ميشه .
لازم به ذکره فيلد option_value از نوع longtext است ، پس تا دلتون ميخواد بريزين توش

تابع add_option

اين تابع براي افزودن و ذخيره کردن يک سري اطلاعات در جدول آپشن هست .
دو آرگومان ميگيرد ، آرگومان اول کليد آپشن و آرگومان دوم مقداري که بايد ذخيره شود (رشته يا آرايه). مثال :

تابع get_option

براي گرفتن مقدار يک آپشن از طريق کليد آن .
يک آرگومان ميگيرد و آن کليد آپشن است . مثال نمايش مقدار آپشن قبلي :

تابع update_option

اين تابع براي تغيير مقدار يک آپشن استفاده ميشود.
دو آرگومان ميگيرد ، اولي کليد آپشن و دومي مقدار جديد . مثال :

تابع delete_option

براي حذف يک آپشن استفاده ميشود. يک آرگومان ميگيرد که کليد آپشن است . مثال :

*نکته پاياني در مورد آپشن ها اينکه شما به جاي مقدار ميتونيد از آرايه استفاده کنيد ،
تابع بصورت خودکار آرايه ها را به رشته سرياليز شده تبديل ميکند و در ديتابيس ذخيره ميکند
و در هنگام گرفتن آپشن باز عمل تبديل را خودکار انجام ميدهد .
آموزش ساخت افزونه وردپرس قسمت سوم

آموزش ساخت افزونه “addfooter”

اين آموزش هم يه مثال ديگه از نحوه ساخت افزونه هستش.
ما توي اين آموزش يه افزونه به اسم addfooter ميسازيم که کارش اينه که
مياد متني رو در پاورقي قالب وردپرسي ما نشون ميده.
فایلی رو ایجاد کنید به نام “add-footer” و توی اون فایلی تشکیل بدین به نام “add-footer.php” و توی اون اطلاعات زیر رو بنویسید .

اين قسمت رو که حتما فهميديد طبق آموزش هاي قبل چيکار کرديم ديگه توضيح نميدم
خوب حالا کد های زیر رو زیر اطلاعات افزونه وارد کنید :

ما توي اين قسمت يه تابع به اسم “simple_add_to_footer_wp_footer” تعريف کرديم که اين تابع
توي فوتر متن “افزونه ساده توسط نام وب سايت” رو نشون بده
بعدشم با تابع add_action به وردپرس فهمونديم که اين تابع رو به کجاي قالب اضافه کنه.
خوب حالا با کد دیگه می خوایم یه تغییر دیگه تو قالب انجام بدیم
کد زیر رو به کد هاتون اضافه کنید :

خب در اين قسمت هم اومديم يه تابع ديگه تعريف کرديم به اسم “simple_add_to_footer_the_content” که اون مياد
يه متني رو به پست هاتون اضافه ميکنه و بعد با تابع “addfilter” اين فيلتر رو به وردپرس معرفي کرديم
و گفتيم توي پست هاي متن ما رو قرار بده.
خوب در اخر فایل شما باید به این صورت در امده باشد :

این دو تا کد عملیاتی جزء مهم ترین و کاربردی ترین کد های ساخت این قبیل پلاگین ها هستند .
حالا شما همون فایلی رو که درست کردید رو به داخل پوشه wp-content/plugins بریزید و یا زیپ کنید و از طریق افزودن افزونه این افزونه رو نصب کنید .
آموزش ساخت افزونه وردپرس قسمت چهارم

آموزش ساخت افزونه “ثبت نام کاربر”

همه ی ما برای ورود به سایتمون فرم ورود داریم که قبلا با ثبت نام برامون باز میشه!
اما همه ی ما به عنوان یه کاربر در مرحله ی اول ثبت نام میکنیم.
همونطور که می بینید سیستم مدیریت محتوای وردپرس خودش فرم ثبت نامی رو برای کاربران سایت ها محیا داره که میشه هر تعداد کاربر در سایت ثبت نام کنند.
اما چطوری میتونیم این فرم رو به میل و خواست خودمون جوری سفارشی سازی کنیم که تنظیماتش مخصوص خودمون بشه؟
در این مقاله آموزشی، مقصود نحوه ی سفارشی سازی فرم ثبت نام با استفاده از برچسب های پوسته و کدهای کوتاه شده (shortcode) ها هستش.
فرم ثبت نام به صورت پیش فرض از دو بخش نام کاربری و آدرس ایمیل تشکیل شده است.
درخواست فقط نام کاربری و ایمیل از کاربر امری فوق العاده ساده است.
در واقع میگه اول، نام کاربری و ایمیل رو وارد کنید سپس پسورد رو براتون ارسال خواهیم کرد تا بتونین باقی مشخصات پروفایل رو تکمیل کنید!
خب چرا به جای این کار از همون اول کاربر همه ی مشخصات رو در مرحله ی اول وارد کنه و مرحله ی ثبت نام رو در یک گام انجام بدیم.
امروز قصدمون اینه که فرم ثبت نامی بسازیم که شامل موارد زیر باشه:
نام کاربری،رمز عبور،ایمیل،آدرس سایت، نام و نام خانوادگی، نام مستعار و بیوگرافی!
این فرم ثبت نام رو میتونیم از طریق شورت کد یا تگ های قالب نمایش بدیم.
با استفاده از شورت کدها قادر به ایجاد برگه ای رسمی از حالت ثبت نام در سایت خواهید بود.
شما میتونید از این شورت کد در پست خود استفاده کنید تا کاربر بتونه به محض وارد شدن، نوشته یا مقاله را بخواند.
بی مقدمه میریم سراغ ساخت افزونه! کدهای زیر به عنوان بخش معرفی افزونه به کار میرند:

سپس تابع پی اچ پی که شامل کدهای اچ تی ام ال برای فرم ثبت نام هست رو ایجاد میکنیم:

فیلد ثبت نام در بالا دارای متغیرهای متفاوتی است. در کدهای عملکردی شما میتونید نمونه ی کدها رو ببنید.به طور مثال:

فرم ثبت نام هرگز به مرحله ی تکامل نمیرسه مگر اینکه شما بهش اعتبار ببخشید تا کاربران حق ورود پیدا کنند.
در نتیجه، باید تابع اعتباری با عنوان Registration_validation بهش داده بشه.
۱- ایجاد تابع و عبور از بخش ثبت نام در آرگومان تابع.

۲- استفاده از کلاس wp_error برای دسترسی به توابع.

۳- یادآوری: باید اعلام کنیم که ثبت نام کاربری و پسورد و ایمیل اجباری است و نباید فراموش بشه.
برای اجرای این قانون، نیاز به چک کردن تمامی فیلدهای خالی داریم. اگر خالی بود باید پیغام خطایی اعلام بشه که مربوط به کلاس wp-error هستش.

۴- البته ما باید چک کنیم که تعداد کاراکترهای نام کاربری کمتر از ۴ تا نباشه.

۵- چک کردن زمان به وجود اومدن نام کاربری

۶- ایجاد خدمات وردپرس با تابع validation_username برای ایجاد نام کاربری معتبر.

۷- رمز عبور انتخابی توسط کاربر نباید کمتر از ۵ کاراکتر باشد.

۸- ایمیل وارد شده معتبر باشد.

۹- اعلام موفقیت ثبت ایمیل.

۱۰- اگر بخش آدرس سایت پر شد باید اعتبار آن چک شود.

۱۱- در پایان، هر کدام از موارد ذکر شده مشکل داشت باید پیغام خطایی اعلام شود.

سپس تابع ()complete_registration در افزونه برای ثبت نام کاربر باید در نظر گرفته شود. در واقع ثبت نام کاربر به وسیله تابع wp_insert_user مورد تایید قرار گیرد.

در مرحله ی بعدی، تابع ()custom_registration_function برای تمامی توابع ایجاد شده در کد بالا کاربرد دارد.

و حالا براي افزونه يه شورت کد مي سازيم :

استفاده از افزونه :
برای استفاده و نمایش افزونه از شورت کد [cr_custom_registration] استفاده کنید

اموزش طراحی سایت

آموزش طراحی سایت

اموزش طراحی وب سایت

آموزش طراحی سایت

درباره آموزشگاه نوین آی تی

همچنین ببینید

نحوه نام گذاری متغییر های جاوا

مطلب جدیدی که در این آموزش قرار است فرا بگیریم نحوه صحیح نامگذاری متغیر ها ...

پاسخ دهید

علی طاهری آموزشگاه طراحی سایت نوین آی تی 021-88283800 info(@)novin-it.net