در بخش شناسنامه‌ی کاربران فیلدهای مختلفی وجود دارد که مقادیر مختلفی را در خود ذخیره کرده است. برای مثال فیلد نام، نام خانوادگی، وبلاگ وغیره. اگر مایل به اضافه کردن فیلدی شخصی برای بلاگ خود هستید این آموزش را دنبال کنید.

برای اینکه بتوانیم فیلد مورد نظر خود را در قسمت پروفایل به نمایش بگذاریم از فیلتر user_contactmethods استفاده کرده و در ادامه تابع خود را اعمال می کنیم.

add_filter('user_contactmethods', function(){});

 

قصد داریم تا یک فیلد برای دریافت و ذخیره شماره همراه کاربران در نظر بگیریم. پس به صورت زیر عمل می‌کنیم:

add_filter('user_contactmethods', function ($user_contact){ $user_contact['mobile'] = 'شماره همراه'; return $user_contact; });

 

ساختار:

-تابع یک ورودی دریافت می‌کند.

-درون تابع با اختصاص دادن کلید (mobile) و عنوان دلخواه (شماره همراه)، آن را return می‌کنیم.

پس از قرار دادن کد، فیلد شماره همراه به قسمت شناسنامه تمام کاربران اضافه خواهد شد.

اضافه کردن فیلد به صفحه ثبت نام کاربر

شاید برای شما مهم باشد که کاربران در زمان ثبت‌نام شماره همراه خود را وارد کنند. برای اینکار از طریق اکشن register_form به فرم ثبت‌نام متصل شده و فیلد خود را اضافه می‌کنیم.

add_action('register_form' , function (){ ?> <p> <label for="mobile">شماره همراه</label> <input type="text" name="mobile" id="mobile"> </p> <?php });

ساختار:

کد بالا صرفا یک لیبل و فیلد از طریق html ایجاد می‌کند.

حال برای ذخیره‌سازی مقدار ورودی از اکشن user_register (پس از ثبت نام) بصورت زیر استفاده می‌کنیم:

add_action('user_register' , function ($user_id){ $userdata = array(); $userdata['ID'] = $user_id; $userdata['mobile'] = $_POST['mobile']; wp_update_user($userdata); });

ساختار:

-تابع یک ورودی که شناسه کاربر است را دریافت می‌کند.

-متغییر userdata که اطلاعات کاربر را دریافت می‌کند مساوی با یک آرایه خالی قرار می‌دهیم.

-شناسه کاربر که از ورودی دریافت شده را مساوی با کلید ID در userdata قرار می‌دهیم.

-مقدار ارسال شده از فیلد شماره همراه را مساوی با کلید mobile در userdata قرار می‌دهیم.

-در انتها با استفاده از تابع wp_update_user() کاربر را با درنظر گرفتن اطلاعات ورودی بروزرسانی می‌کنیم.

اجباری کردن فیلد در زمان ثبت‌نام

برای اجباری کردن فیلد شماره همراه در زمان ثبت نام هم بصورت زیر عمل می‌کنیم:

add_filter( 'registration_errors', function ( $error ) { if ( empty( $_POST['mobile'] ) || ! empty( $_POST['mobile'] ) && trim( $_POST['mobile'] ) == '' ) { $error->add( 'mobile_error', '<strong>خطا</strong>: شماره همراه خود را وارد نمایید.' ); } return $error; });

ساختار:

-برای فیلتر registration_errors یک تابع تعریف می‌کنیم.

-تابع یک ورودی که همان خطا می‌باشد را دریافت می‌کند.

-درون تابع تعریف می‌شود که اگر فیلد موردنظر به هر صورت خالی بود با استفاده از شی error یک خطا ایجاد شود.

-درانتها error را return می‌کنیم.

دسترسی به متای ذخیره شده

برای اینکه بتوان به متایی که در پایگاه داده ذخیره کرده‌ایم دسترسی داشته باشیم از قطعه کد زیر استفاده می‌کنیم:

$user_mobile = get_user_meta(get_current_user_id(),'mobile'); echo $user_mobile;

-به وسیله‌ی تابع get_user_meta به متاهای ذخیره شده کاربر در پایگاه داده دسترسی پیدا می‌کنیم.

-این تابع با گرفتن ۲ مقدار اصلی، آیدی کاربر و کلید متا،داده ذخیره شده را بر می‌گرداند.

-برای اینکه آیدی کاربر فعلی را داشته باشیم از تابع get_current_user_id استفاده کردیم.

-کلید متا نیز همان نامی می‌باشد که در ابتدا برای ذخیره شدن در پایگاه داده انتخاب کرده‌ بودیم.

-در انتها داده را درون یک متغییر با نام user_mobile ریخته و با دستور echo آن را به نمایش می‌گذاریم.

متاباکس چیست

به زبان ساده Metabox ها در وردپرس قابلیت/قسمتی برای دریافت و یا نمایش اطلاعات است. قابل تنظیم با توجه به نیازها، و دارای ویژگیهایی نظیر کشیدن و رها کردن و باز و بسته شدن می‌باشند. نمونه‌های مختلفی از آنها را در قسمت ایجاد یک نوشته می‌توانید مشاهده کنید؛ مانند متاباکس انتشار، نویسنده، برچسب‌ها و…

دلایل استفاده از متاباکس بسته به نیاز متفاوت است. اما برای ایجاد ویژگی‌های جدید در وردپرس مورد استفاده قرار می‌گیرد. برای مثال اگر می‌خواهید فیلدهای مختلفی را در تمام نوشته‌هایی که منتشر می‌کنید به نمایش بگذارید دو روش در پیش‌رو دارید:

  1. استفاده از زمینه‌های دلخواه
  2. استفاده از متاباکس

استفاده از زمینه‌های دلخواه در مواردی که تعداد استفاده از آن زیاد نباشد بهترین گزینه است! اما اگر طبق مثال بالا برای هر نوشته به تعداد متعددی فیلد و اطلاعات نیاز دارید بهتر است از متاباکس استفاده کنید. در ادامه با چگونگی یک متاباکس در قسمت نوشته‌ها آشنا می‌شوید.

ایجاد متاباکس وردپرس

add_action('add_meta_boxes','dw_addmeta'); function dw_addmeta(){ add_meta_box( 'dangoweb-metabox', 'عنوان متاباکس', 'محتوای متاباکس', 'post', 'advanced', 'low' ); }

توضیحات:

-در خط ابتدایی با ایجاد add_action و استفاده از اکشن add_meta_boxes با استفاده از تابعی که در ادامه با نام dw_addmeta (هرنامی می‌تواند باشد) قرار گرفته متاباکس خود را در زمان ایجاد متاباکس‌ها اضافه می‌کنیم.

-در خط بعدی تابع خود را ایجاد می‌کنیم.

-اکنون برای ایجاد متاباکس از تابع add_meta_box استفاده می‌کنیم که دارای آرگومان‌های مختلف است که در ادامه هرکدام توضیح داده می‌شود.

id: شناسه متاباکس (نام دلخواه)

title: عنوان متاباکس

callback: محتوای اصلی که می‌تواند شامل نوشته، فرم، فیلد و… باشد. (با استفاده از یک تابع می‌توان محتوای مورد نظر را وارد کرد)

screen: مکان نمایش متاباکس را مشخص می‌کند. (post, page, dashboard, link …)

context: مکان قرارگیری متاباکس در صفحه که شامل مقادیر advanced و side می‌باشد. در صفحه ایجاد نوشته اگر توجه کنید دو تا قسمت وجود دارد که یک قسمت در برگیرنده ویرایشگر، زمینه‌های دلخواه و.. بوده که بخش اصلی است؛ و قسمت دیگر نوارکناری بوده و شامل انتشار، برچسب‌ها، دسته بندیها و…

  • advanced: نمایش متاباکس در بخش اصلی
  • side: نمایش متاباکس در نوارکناری

priority: اولویت قرارگیری متاباکس شامل مقادیر (high, core, default, low) می‌باشد.

با استفاده از این آموزش می‌توانید یک متاباکس را برای سایت خود ایجاد کنید. اما برای اینکه بتوانید اطلاعات خود را وارد، ذخیره و به نمایش بگذارید در مطلبی جداگانه به آن خواهیم پرداخت.

افزونه‌های زیادی وجود دارند که پس از فعالسازی، نام افزونه و لینک به صفحه‌ی تنظیمات را بصورت خودکار در منوی پیشخوان اضافه می‌کنند. در این آموزش قصد داریم با استفاده از تکه کد زیر لینک موردنظر خود را به منوی پیشخوان بیفزاییم. بدین صورت می توان منوی پیشخوان را با توجه به نیاز خود شخصی‌سازی کنیم.

add_action('admin_bar_menu','add_menubar',999); function add_menubar(){ global $wp_admin_bar; $wp_admin_bar->add_menu(array( 'id'=>'my_menu', 'title'=>'منوی من', 'parent'=>'root-default', 'href'=>'#' )); }

-ابتدا به وسیله‌ی اکشن به قلاب admin_bar_menu متصل می‌شویم. با استفاده از این قلاب می‌توانیم تغییرات مورد نظر خود را در منوی پیشخوان اعمال کنیم. سپس نام تابعی که قرار است تغییرات مورد نظر خود را در آن ایجاد کنیم می‌نویسیم. در اینجا نام تابع add_menubar درنظر گرفته شده است. شما می توانیم نام دلخواه خود را بنویسید.

-در مرحله بعدی تابع add_menubar را ایجاد می کنیم.

-برای ایجاد منو نیاز به یک شی در ودپرس به نام wp_admin_bar داریم که در قالب متغییر سراسری (global) در دسترس قرار می گیرد.

-پس از فراخوانی شی wp_admin_bar از متد add_menu استفاده می‌کنیم. این متد شامل یک آرایه با پارامترهای id, title, parenthref, group, meta می‌باشد. البته نیاز به تکمیل همه‌ی این پارامترها نیست!

  • id: شناسه منحصربفرد (دلخواه)
  • title: عنوان یا متن منو
  • parent: والد منوی ساخته شده (جایگاه منو)
  • href: پیوند متن
  • meta: ویژگی‌های اضافه که خود شامل آرایه‌ای با پارامترهای مختلف است.

نکته‌ای که درباره پارامتر parent باید اضافه شود، جایگاهی است که با توجه به شناسه در منوی پیشخوان مورد استفاده قرار می گیرد. به زبان ساده منوی پیشخوان دارای دو منوی جداگانه با نام‌های root-defualt و top-secondary می باشد. منوی اول شامل جایگاه‌های لوگو، لینک سایت، دیدگاه‌ها و… است. و منوی دوم مربوط به لینک پروفایل و خروج است. با استفاده از هریک از این شناسه ها و همچنین دیگر شناسه‌هایی که در منوی پیشخوان وجود دارد می‌توان جایگاه لینک ساخته شده را تغییر داد.

اگر پارامتر parent نوشته نشود و یا خالی رها شود؛ بصورت پیشفرض در شناسه root-defualt قرار می‌گیرد.

اگر دقت کرده باشید در زمان ایجاد اکشن، پس از اضافه کردن تابع، عددی قرار گرفته است! این عدد نشانگر اولویتی است که لینک شما در منو دارد. هرچه این عدد بیشتر باشد جایگاه لینک ساخته شده به قسمت انتهایی منو حرکت می‌کند. اما اگر این اولویت نوشته نشود به صورت پیشفرض جایگاه لینک ساخته شده در ابتدای منو ثبت می‌شود.

وردپرس به دلیل گستردگی در ارایه امکانات، یکی از بهترین سیستم‌های مدیریت محتواست که می توان هر تغییری را بدون نیاز به دستکاری در فایلهای اصلی آن انجام داد. یکی از این امکانات ایجاد تغییر در خروجی با استفاده از فیلترها است. مبحث فیلترها در وردپرس بسیار ساده اما نیاز به کار و آشنایی دارد. در این آموزش با یک تمرین ساده شروع می‌کنیم تا بتوانیم در ادامه با آموزش‌های حرفه‌ای‌تری نیازهای خود را برطرف کنیم.

نکته: فیلترها در وردپرس برای ایجاد تغییرات در خروجی مورد استفاده قرار می گیرد.

این آموزش درباره اضافه کردن محتوا (متن، تصویر و…) به مطالب در وردپرس است. در اینجا می‌خواهیم با استفاده از تکه کد زیر و فیلتر در وردپرس این تغییر را در مطالب ایجاد کنیم.

add_filter('the_content', 'addContent'); function addContent($content){ return $content . '<div><strong>' . 'محتوای مورد نظر برای قرارگیری در انتهای مطالب در وردپرس' . '</strong></div>'; }

تابع add_filter در تکه کد بالا دارای دو برچسب می باشد. برچسب ابتدایی، قلاب the_content بوده که برای ایجاد تغییرات در مطالب وردپرس بکار برده می شود؛ و برچسب دوم، نام تابعی است که با استفاده از آن تغییرات را به add_filter برای اجرا می دهیم(هرنامی می تواند باشد).

پس از تکمیل تابع add_filter تابع شخصی خود را با نام addcontent با یک آرگومان ورودی با نام دلخواه (در اینجا content) می نویسیم. درون این تابع ابتدا باید مقدار content که محتوای مطالب است را برای ارسال با استفاده از دستور return به خروجی ببریم. اگر این ارسال صورت نگیرد در خروجی هیچ چیزی نخواهیم داشت.

سپس در ادامه می توانیم محتوای مورد نظر خود را با استفاده از برچسب‌های HTML نوشته و با قرار دادن کدهای خود در function.php پوسته آن را در تمامی مطالب خود مشاهده کنید. از این آموزش می توان برای قرار دادن متن‌ها و یا تصاویر و… برای اطلاع‌زسانی یا تبلیغات استفاده کرد.

در آموزش تغییر مسیر نشانی سایت از http به https در وردپرس روش انتقال نشانی سایت پس از فعالسازی گواهی https آموزش داده شد. اما برخی کاربران از اینکه نشانی های موجود در مطالب و همچنین تصاویر کماکان از پروتکل http استفاده کرده و در زمان انتقال به https تبدیل می شوند. تصمیم بر نوشتن این آموزش برای رفع این مشکل گرفتیم.

در این آموزش فرض را بر این گذاشتیم که شما مرحله اول انتقال نشانی به پروتکل https که در پیوند بالا اشاره شد را انجام داده‌اید. پس از آن شما باید نشانی های موجود در نوشته اعم از پیوندها و تصاویر را تغییر دهید. اینکار را می توان به دو روش انجام داد:

  1. استفاده از افزونه‌های مرتبط
  2. بکارگیری کوئری در mysql

ابتدا دو افزونه را برای انجام اینکار معرفی کرده سپس روش استفاده از کوئری را پی می گیریم.

افزونه Search & Replace

از این افزونه برای جستجو و جایگزینی هرموردی در پایگاه داده استفاده می شود. برای حل مشکل نشانی ها در سایت خود ابتدا افزونه را از مخزن وردپرس نصب کرده و پس از فعالسازی آن، از فهرست مدیریت > ابزار > Search & Replace را انتخاب کنید. پس از ورود، از زبانه Backup Database و با کلیک برروی دکمه Create SQL File از پایگاه داده خود پشتیبان تهیه کرده تا در صورت ایجاد مشکل بتوانید آن را بازیابی کنید. سپس مانند تصویر زیر به زبانه Search & Replace رفته و در فیلد مربوط به Search for نشانی قبلی خود و در فیلد Replace with نشانی جدید خود که از پروتکل https استفاده می کند را بنویسید.

پس از وارد کردن نشانی از قسمت Select tables که انتخابگر جداول موجود در پایگاه داده شماست، تمام آنها را انتخاب کرده و بر روی دکمه Do Search & Replace کلیک کنید تا جستجو و جایگزینی به اتمام برسد. با استفاده از این افزونه به راحتی هرچه تمام‌تر می توانید نشانی‌های خود و همچنین تغییرات دیگر را در پایگاه داده خود انجام دهید.

افزونه SSL Insecure Content Fixer

این افزونه تنها برای رفع مشکل ناامن بودن نشانی‌ها مورد استفاده قرار می گیرد و عملا برای جایگزینی ریشه‌ای مانند افزونه قبلی که معرفی شد نیست؛ اما میتواند تکمیل کننده آن باشد. تا اگر مشکلی در نشانی‌ها وجود داشت رفع نماید. پس از نصب این افزونه از مخزن وردپرس از فهرست مدیریت > SSL Insecure Content رفته و گزینه Capture All را فعال و تنظیمات را ذخیره کنید.

بکارگیری کوئری در mysql برای جایگزینی نشانی

پیشنهاد می شود اگر اطلاعات کافی در این زمینه ندارید از انجام آن خودداری کرده و از افزونه  Search & Replace استفاده کنید. این روش تنها برای افزایش اطلاعات بیان می شود.

پس از ورود به مدیریت هاست خود (Cpanel or DirectAdmin) وارد phpmyadmin شده و پایگاه داده وردپرس خود را انتخاب کنید. وارد زبانه SQL و کوئری‌ها زیر را نوشته و اجرا کنید.

توجه: نشانی سایت خود را جایگزین نشانی zooroofchi.ir کنید.

-جایگزینی در سطر post_content

UPDATE wp_posts SET `post_content` = REPLACE (`post_content`, 'src="http://zooroofchi.ir', 'src="https://zooroofchi.ir');

-جایگزینی در سطر guid

UPDATE wp_posts SET `guid` = REPLACE (`guid`, 'src="http://zooroofchi.ir', 'src="https://zooroofchi.ir');

با بکارگیری این روش نشانی‌های شما با نشانی جدید جایگزین و مشکل رفع خواهد شد!