اگر شما هم از سیستم مدیریت محتوای وردپرس استفاده میکنید؛ پس حتما افزونههایی را در آن نصب کردهاید. این افزونهها توسط اشخاصی توسعه داده شدهاست. گاهی هنگام کار با افزونه خطاهایی رخ میدهد یا از نظر امنیتی دچار مشکلاتی میشود. در مقاله “7 روش توسعه افزونه وردپرس” همراه ما باشید.
یک استراتژی داشته باشید…
داشتن استراتژی هنگام توسعه افزونه یکی از نکات بسیار مهمی است که باید رعایت شود؛ به برخی از نکات زیر توجه کنید:
آیا این افزونه به صورت رایگان ارائه میشود یا برای کسب درآمد؟
برای کاربران این افزونه پشتیبانی ارائه میدهید یا خیر؟
آیا افزونهای مشابه افزونهای که قصد طراحی دارید وجود دارد؟
برای شروع، این سوالات به شدت کاربردی است و اولین راه توسعه افزونه وردپرسی است.
1) افزونه باید کدنویسی مرتب و استاندارد داشتهباشد:
شما کدام یک از کدهای زیر را ترجیح میدهید:
یا
طبیعتا مورد دوم حس بهتری دارد و موردهای سادهای مانند فاصله مناسب و نامگذاری متغیرها یک گزینه مثبت در کدنویسی استاندارد است.
2) امنیت افزونه وردپرسی:
امن بودن افزونه وردپرسی یکی از مهمترین روشهای توسعه افزونه در وردپرس است؛ اما در عین حال توجه کمی به آن میکنند.
حتما از هاست وردپرس زرینهاست استفاده کن!
به امنیت افزونه وردپرسی که قصد توسعه آن را دارید؛ توجه بسیاری کنید!
خروجی و ورودیها را ایمن نمایید.
با موارد زیر آشنا باشید:
esc_url_raw
wp_filter_kses
esc_attr
esc_html
esc_textarea
اگر از یک فانکشن مانند wp_insert_post استفاده میکنید؛ وردپرس امکان این را به شما میدهد که اطلاعات را پاکسازی کنید.
اگر از پایگاهدادهای بهصورت $wpdb->insert استفاده میکنید؛ وردپرس اطلاعات را پاک میکند. اما اگر برای دسترسی به پایگاهداده بهصورت مستقیم از $wpdb->get_result و سپس از wpdb->prepare استفاده کنید؛ باید از تزریق کد مخرب به پایگاهداده جلوگیری کنید.
بجای استفاده از کد زیر:
$admin_posts = $wpdb->get_results( "SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_author = 1" );
برای نحوه فعالسازی تایید دو مرحلهای برای ورود به پیشخوان وردپرس این مقاله را بخوانید.
از کد زیر استفاده کنید:
$admin_posts = $wpdb->get_results($wpdb->prepare( "SELECT ID, post_title FROM $wpdb->posts WHERE post_status = %s AND post_author = %d", 'publish', 1 ));
3) استفاده از nonce برای فرم و تایید url:
مسئله مهمی وجود دارد که گاهی اوقات ممکن است فرم یا آدرس ارسالی، به وردپرس برگردد؛ این نشاندهنده یک عامل مخرب است.
برای تامین امنیت این بخش از nonce استفاده میکنیم. nonce یک عدد یکبارمصرف است.
برای فرم از فیلد wp_nonce_field استفاده میکنیم که فرم به عنوان یک عامل مخفی گنجیده میشود:
wp_nonce_field('my_nonce', 'my_nonce_submit');
به دلیل اینکه فرم یک عامل مخفی است؛ برای تایید به ما برمیگردد و ما نیز برای اعتبارسنجی آن، از قطعه کد wp_verify_nonce استفاده میکنیم:
wp_verify_nonce($_POST['my_nonce_submit'], 'my_nonce') )
حالا به صورت درست کار میکند و اعتبارسنجی صورت میگردد.
برای آدرس یا url میتوانید یک nonce به کمک wp_nonce_url ایجاد کنید:
$nonced_url = wp_nonce_url('http://my_site.com?action=register&id=123456', 'register_nonce');
وقتی که قصد دارید ایمیلی جهت تایید مراحل، ارسال کنید؛ بکارتان میآید.
بعد برای بررسی آدرس ورودیها از nonce باید از chek_admin_referer برای اعتبارسنجی استفاده کرد:
if($_GET['action'] == 'register'){ if(check_admin_referer('register_nonce')){ if(verify_id($_GET['id'])){ echo 'Registration verified!'; } }else{ echo 'Registration verification FAILED!'; } }
4) دسترسی هوشمند به خدمات وب:
افزونهها معمولا به API نیازمندند، با اتصال به کلید API میتوان کاراییهای افزونه را فعال کرده و از طرفی نیز از امنیت خاصی برخوردار میشود.
برای بررسی و رفع خطای decetive site ahead در وردپرس این مقاله را بخوانید.
برای فعال کردن این امکان؛ باید از wp_remote_post استفاده و کد زیر را در بدنه افزونه اضافه کنید:
$page_data = wp_remote_get('http://site.com/page'); if($page_data['response']['code'] == 200){ $body = $page_data['body']; }
بهطور مشابه کد زیر را نیز در wp_remote_post برای ورود وارد کنید:
$args = array( 'login' => 'login_name', 'password' => 'my_password' ); $response = wp_remote_post('http://site.com/login', $args);
5) چند زبانه کردن افزونه:
شاید برای ما ایرانیها زیاد مهم نباشد که یک افزونه بینالمللی بسازیم اما ممکن است به هر دلیل یک فرد از افزونه ما خوشش بیایید و نیاز به تغییر زبان افزونه داشته باشد، پس باید چه کاری کرد؟
با استفاده از عملکرد _e و __ میتوان با نرمافزاری مانند poedit افزونه را به زبان مدنظر ترجمه کرد.
6) بارگذاری موارد مورد نیاز:
ممکن است روزی افزونهای که ساختهاید را بگذارید کنار و دیگر برای آن بهروزرسانی جدیدی منتشر نکنید اما افرادی که از این افزونه استفاده میکنند ممکن است همچنان به آن نیازمند باشند؛ پس بهتر است به گونهای فایلهای مورد نیاز افزونه را بارگذاری کنید که فرد دیگری بتواند افزونه را بهروزرسانی کند.
برای مثال فقط شیوهنامه javascript و stylesheet را بارگذاری کنید.
7) قابلیت حذف نصب افزونه را ایجاد کنید:
یکی از مواردی که هنگام توسعه افزونه باید به آن توجه کنید؛ غیرفعالسازی و حذف افزونه است.
این امکان بسیار مهم است؛ زیرا ممکن است کاربران با مشکلات جدی روبرو شوند.
همچنین برای نحوه تشخیص قالب وردپرس این مقاله را حتما بخوانید.
برای این کار کافیست فایلی به اسم uninistall ایجاد کرده و کد آن به شکلی باشد که فشار دادن یک دکمه، افزونه غیرفعال شود:
if(defined('WP_UNINSTALL_PLUGIN') ){ //delete options, tables or anything else }
و در آخر
چنانچه شما یک توسعه افزونه وردپرسی هستید؛ باید روشهای توسعه یک افزونه را بدانید و طبق قوانین آن عملیات خود را انجام دهید تا در نهایت یک افزونه استاندارد ساخته باشید.
وقت بخیر برای طراحی افزونه وردپرسی نیاز به چه زبان هایی است
سلام شروین عزیز
برای پیاده سازی افزونه های وردپرسی بصورت تخصصی نیاز به زبان های php html css و در برخی جاوااسکریپت نیز باید مسلط باشی
موفق باشی