- مقدمه ای بر افزونه نویسی
- افزونه وردپرس چیست ؟
- افزونه ها چگونه با وردپرس تعامل دارند ؟
- چه زمانی افزونه ها بارگذاری می شوند ؟
- منابع معتبر دریافت افزونه
- معرفی چند افزونه محبوب وردپرس
- بررسی برچسب های افزونه وردپرس
- مزایای افزونه های وردپرس
- جداسازی افزونه ها و پوسته ها
- اشتراک گذاری و استفاده مجدد آسان افزونه های وردپرس
- بروزرسانی های آسان افزونه های وردپرس
- مدیریت افزونه های وردپرس
- ویرایش افزونه های وردپرس
- دایرکتوری افزونه های در وردپرس
- وضعیت های مختلف افزونه های وردپرس
- تست عملکرد افزونه های وردپرس
- پایه و اساس افزونه
- لزوم نامگذاری مناسب افزونه وردپرس
- اهمیت پوشه بندی افزونه های وردپرس
- اهمیت پیشوندگذاری در افزونه های وردپرس
- سازماندهی فایل های افزونه وردپرس
- ساختار استاندارد پوشه های افزونه وردپرس
- الزامات بخش هدر افزونه وردپرس
- لایسنس یا مجوز افزونه وردپرس
- تعیین مسیرها در توسعه افزونه وردپرس
- تعیین مسیر به صورت محلی در افزونه وردپرس
- تعیین مسیر URL ها در توسعه افزونه وردپرس
- تابع فعال سازی افزونه وردپرس
- ایجاد تنظیمات پیش فرض هنگام فعال سازی افزونه وردپرس
- تابع غیرفعال سازی افزونه وردپرس
- تفاوت غیرفعال کردن و حذف کردن افزونه وردپرس
- حذف افزونه وردپرس
- حذف افزونه وردپرس توسط فایل Uninstall.php
- حذف افزونه وردپرس توسط قلاب Uninstall
- اهمیت مستندسازی کدهای افزونه وردپرس
- نامگذاری متغیرها ، توابع و فایل ها در افزونه وردپرس
- کنترل رشته ها در افزونه با علامت های نقل قول تکی و جفت
- دندانه گذاری یا تورفتگی کدها در افزونه وردپرس
- استایل دهی کدهای افزونه با آکولاد
- استفاده از فاصله در کدنویسی افزونه
- استفاده از تگ کوتاه PHP در افزونه نویسی
- دستورات SQL در افزونه نویسی وردپرس
- چک لیست توسعه افزونه وردپرس
- آشنایی با قلاب های وردپرس
- آشنایی با قلاب های اکشن در وردپرس
- آشنایی کامل با اکشن وردپرس
- توابع قلاب اکشن وردپرس
- تابع remove_action وردپرس
- تابع remove_all_actions وردپرس
- تابع has_action وردپرس
- تابع did_action ورپرس
- plugins_loaded ؛ قلاب اکشن کاربردی وردپرس
- Init ؛ قلاب اکشن کاربردی وردپرس
- Admin_menu ؛ قلاب اکشن کاربردی وردپرس
- template_redirect ؛ قلاب اکشن کاربردی وردپرس
- wp_head ؛ قلاب اکشن کاربردی وردپرس
- آشنایی با قلاب های فیلتر – Filter Hooks در وردپرس
- تابع apply_filters_ref_array وردپرس
- تابع remove_filter وردپرس
- تابع remove_all_filters وردپرس
- تابع has_filter وردپرس
- تابع current_filter وردپرس
- توابع بازگشت سریع وردپرس
- قلاب فیلتر the_content وردپرس
- قلاب فیلتر the_title وردپرس
- قلاب فیلتر comment_text وردپرس
- قلاب فیلتر template_include وردپرس
- استفاده از قلاب ها در داخل یک کلاس
- ایجاد قلاب های سفارشی در وردپرس
- مزایای ایجاد قلاب های سفارشی
- چگونه قلاب های وردپرس را پیدا کنیم ؟
- قلاب های متغیر وردپرس
- لیست مرجع قلاب های وردپرس
- ادغام افزونه با وردپرس
- ایجاد یک منوی سطح بالا در وردپرس
- افزودن یک زیرمنو به وردپرس
- افزودن یک زیرمنو به منوهای موجود وردپرس
- ایجاد ابزارک با کدنویسی در وردپرس
- ایجاد یک ابزارک حرفه ای در وردپرس
- ایجاد ابزارک های داشبورد وردپرس
- ایجاد ابزارک داشبورد قابل تنظیم در وردپرس
- ایجاد متاباکس (Meta Box) در وردپرس
- ذخیره کردن داده های متاباکس در وردپرس
- ایجاد متاباکس پیشرفته در وردپرس
- ایجاد یک افزونه پایدار و با ثبات
قدرت اصلی متاباکس ها امکان ذخیره کردن داده برای یک نوشته ، برگه و هر نوع محتوای دیگر در وردپرس است .
هر داده ای که مرتبط با محتوای وردپرس در بانک اطلاعاتی ذخیره شود ، متاداده نام دارد .
در صفحه افزودن / ویرایش نوشته وردپرس به صورت پیش فرض متاباکسی برای فیلدهای سفارشی وجود دارد که می توانید آن را از طریق بخش ” تنظیمات صفحه ” موجود در بالای صفحه ، سمت چپ آن را فعال یا غیرفعال کنید .
فیلدهای سفارشی یک روش سریع برای ذخیره متاداده برای محتوای وردپرس است .
در فصل 11 ” توسعه نوشته ها ” ، متاداده ها به صورت دقیق تر مورد بررسی قرار خواهند گرفت ، اما نیاز است که شما مفهوم ذخیره داده در متاباکس را یاد بگیرید .
در مثال زیر یک متاباکس روی نوشته های وردپرس برای ذخیره 2 فیلد ایجاد شده است .
1 2 3 4 5 6 7 |
<?php add_action( 'add_meta_boxes', 'rwpp_mbe_create' ); function rwpp_mbe_create() { //create a custom meta box add_meta_box( 'rwpp-meta', 'My Custom Meta Box', 'rwpp_mbe_function', 'post', 'normal', 'high' ); } ?> |
ابتدا نیاز است که متاباکس را ایجاد و مقداردهی اولیه کنیم . سپس یک تابع برای نمایش فیلدهای فرم را ایجاد می کنیم .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php function rwpp_mbe_function( $post ) { //retrieve the metadata values if they exist $rwpp_mbe_name = get_post_meta( $post->ID, '_rwpp_mbe_name', true ); $rwpp_mbe_costume = get_post_meta( $post->ID, '_rwpp_mbe_costume', true ); echo 'Please fill out the information below'; ?> <p>Name: <input type="text" name="rwpp_mbe_name" value=" <?php echo esc_attr( $rwpp_mbe_name ); ?>" /></p> <p>Costume: <select name="rwpp_mbe_costume"> <option value="vampire" <?php selected( $rwpp_mbe_costume, 'vampire' ); ?>> Vampire </option> <option value="zombie" <?php selected( $rwpp_mbe_costume, 'zombie' ); ?>> Zombie </option> <option value="smurf" <?php selected( $rwpp_mbe_costume, 'smurf' ); ?>> Smurf </option> </select> </p> <?php } ?> |
اولین چیزی که باید به آن دقت کنید این است که شیء $post به عنوان یک پارامتر به تابع سفارشی ارسال شده است . اینکار به شما امکان می دهد که همه داده های موجود نوشته یا post را در یک شیء در اختیار داشته باشید و از آنها استفاده کنید . در این مثال از شناسه یا ID نوشته در متاباکس استفاده می شود .
اکنون نیاز دارید که مقادیر دو متاداده را در صورت وجود داشتن از وردپرس دریافت کنید . برای اینکار از تابع get_post_meta() استفاده می شود .
این تابع 3 پارامتر را دریافت می کند که عبارتند از :
post_id – شناسه نوشته که شما می خواهید متاداده را از آن دریافت کنید .
key – نام منحصربفرد فیلد متاداده که می خواهید آن را دریافت کنید .
single – توسط این گزینه می توانید تعیین کنید که خروجی تابع به صورت یک آرایه باشد یا یک رشته تکی .
اگر شما یک post یا نوشته جدید ایجاد کنید ، 2 مقدار متاداده وجود نخواهند داشت ، زیرا فیلدها ایجاد نشده اند .
در گام بعدی 2 فیلد فرم نمایش داده می شوند .
فیلد اول یک فیلد متنی برای یک نام است . دقت کنید که مقدار فیلد متنی با متغیر $rwpp_mbe_name تنظیم شده است که مقدار دریافتی متاداده را در خود نگهداری می کند . مقدار این متغیر به خاطر مسائل امنیتی توسط تابع esc_attr() رد شده است .
فیلد دوم در فرم ، یک فیلد فرم HTML از نوع <select> است .
این فیلد دارای 3 انتخاب Vampire ، Zombie و Smurf است .
در این مثال از تابع selected() برای تشخیص انتخاب شدن گزینه های فیلد انتخاب استفاده شده است .
اکنون فرم متاباکس کامل شده است و مشاهده می کنید که نیازی به اضافه کردن دکمه ارسال ( submit ) و یا تگ form به متاباکس وجود نداشت .
با استفاده از قلاب اکشن save_post مقادیر به تابع rwpp_mbe_save_meta() ارسال می شوند که در بخش زیر مشاهده می کنید .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php //hook to save the meta box data add_action('save_post', 'rwpp_mbe_save_meta'); function rwpp_mbe_save_meta($post_id) { //verify the metadata is set if (isset($_POST['rwpp_mbe_name'])) { //save the metadata update_post_meta($post_id, '_rwpp_mbe_name', strip_tags($_POST['rwpp_mbe_name'])); update_post_meta($post_id, '_rwpp_mbe_costume', strip_tags($_POST['rwpp_mbe_costume'])); } } ?> |
در کد بالا ابتدا از تابع add_action() برای اجرای قلاب اکشن save_post استفاده شده است تا در زمان ذخیره نوشته ، تابع rwpp_mbe_save_meta() فراخوانی شود .
این تابع داده های وارد شده توسط کاربر در متاباکس را ذخیره می کند .
دقت کنید که متغیر $post_id به عنوان پارامتر به تابع ارسال شده است .
شناسه نوشته در زمان ذخیره متاداده ها مورد استفاده قرار می گیرد .
یک روش خوب برای تایید فیلدهای فرم استفاده از تابع isset() موجود در php است .
در پایان بوسیله تابع update_post_meta() متاداده های وارد شده توسط کاربر ذخیره یا بروزرسانی می شوند .
تابع update_post_meta() دارای 4 پارامتر به شرح زیر است :
post_id – شناسه نوشته ای که می خواهید متاداده ها را برای آن ذخیره کنید .
meta_key – نام منحصربفرد فیلد متاداده ای که می خواهید آن را ذخیره کنید .
meta_value – مقدار متاداده برای ذخیره شدن
prev_value – مقدار قدیمی فیلد متاداده که برای فیلدهای همنام متفاوت است .
در این مثال به خاطر اختیاری بودن پارامتر چهارم ، تنها از سه پارامتر اول تابع یعنی شناسه نوشته ، نام فیلد متاداده و مقدار وارد شده برای متاداده ، استفاده شده است .
مقادیر فرم توسط تابع strip_tags() پاکسازی می شوند .
اگر نام متاداده های شما با زیرخط یا _ شروع شود ، در فیلدهای سفارشی متاباکس وردپرس نمایش داده نمی شود . این مورد برای فیلدهایی که نیاز نیست توسط کاربر دستکاری شوند بسیار کاربردی می باشد .
شما موفق شدید که یک متاباکس سفارشی با قابلیت ذخیره سازی متاداده ها را در وردپرس ایجاد کنید .
اکنون کد کامل این مثال را مشاهده کنید .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<?php /* Plugin Name: Meta Box Example Plugin Plugin URI: http://example.com/wordpress-plugins/my-plugin Description: A plugin to create meta boxes in WordPress Version: 1.0 Author: Esmail Ebrahimi Author URI: https://kanithemes.com License: GPLv2 */ add_action( 'add_meta_box', 'rwpp_mbe_create' ); function rwpp_mbe_create() { //create a custom meta box add_meta_box( 'rwpp-meta', 'My Custom Meta Box', 'rwpp_mbe_function', 'post', 'normal', 'high' ); } function rwpp_mbe_function( $post ) { //retrieve the metadata values if they exist $rwpp_mbe_name = get_post_meta( $post->ID, '_rwpp_mbe_name', true ); $rwpp_mbe_costume = get_post_meta( $post->ID, '_rwpp_mbe_costume', true ); echo 'Please fill out the information below'; ?> <p>Name: <input type="text" name="rwpp_mbe_name" value=" <?php echo esc_attr( $rwpp_mbe_name ); ?>" /></p> <p>Costume: <select name="rwpp_mbe_costume"> <option value="vampire" <?php selected( $rwpp_mbe_costume, 'vampire' ); ?>> Vampire </option> <option value="zombie" <?php selected( $rwpp_mbe_costume, 'zombie' ); ?>> Zombie </option> <option value="smurf" <?php selected( $rwpp_mbe_costume, 'smurf' ); ?>> Smurf </option> </select> </p> <?php } //hook to save the meta box data add_action( 'save_post', 'rwpp_mbe_save_meta' ); function rwpp_mbe_save_meta( $post_id ) { //verify the metadata is set if ( isset( $_POST['rwpp_mbe_name'] ) ) { //save the metadata update_post_meta( $post_id, '_rwpp_mbe_name', strip_tags( $_POST['rwpp_mbe_name'] ) ); update_post_meta( $post_id, '_rwpp_mbe_costume', strip_tags( $_POST['rwpp_mbe_costume'] ) ); } } ?> |


بسم الله الرحمن الرحیم
سلام علیکم
شما در وردپرس قلم خیلی خوبی دارید واقعا خیلی خوب توضیح می دید
ان شاالله یک متن آموز ش کامل از وردپرس رو بتونید رائه کنید
از خدای متعال عزت و سربلندی و گمنامی برای شما خواستارم
درود
بسیار عالی و کاربردی این آموزش به زبان ساده یکی از پیچیده ترین مبحث های وردپرس را توضیح میدهد…تشکر از شما و آرزوی موفقیت