استاد شدن در متا دیتا وردپرس – درک و استفاده از آرایه ها

استاد شدن در متا دیتا وردپرس – درک و استفاده از آرایه ها

در قسمت پیش از این مجموعه، ما آموختیم که متا دیتا (meta data) در وردپرس چیست، و چگونه می توان بازیابی کرد، و اینکه انواع داده های مختلف مثل اشیاء و یا آرایه برگشت (return) داده می شوند. اگر هنوز قسمت قبل را مطالعه نکرده اید بهتر است، برای درک بیشتر این موضوع قسمت قبل را مطالعه کنید – (استاد شدن در متا دیتا وردپرس – مقدمه)

هنگامی که یک آرایه را بصورت دستی ایجاد می کنید، شما می دانید که ساختار آن چیست و نام هر شاخص (index) آن چیست. ولــی وقتی آرایه را توسط پرس و جو (query) یک دیتابیس ایجاد می کنید، نیاز به کمی کار شناسایی دارید که بتوانید ساختار داده برگشتی و نام شاخص ها را شناسایی کنید.

 

انواع آرایه

قبل از اینکه انواع آرایه در دسترس را بررسی کنیم، مهم است که ابتدا درک کنیم آرایه در PHP یک متغیر است که شامل بیش از یک داده است.

 

آرایه های انجمنی در مقابل آرایه های ایندکس شده

ساده ترین مثال از یک آرایه، لیستی از داده های از هم جدا شده توسط کاما (,) در داخل تابعی به نام ()array است، مثل این:

PHP به طور خودکار لیست از هم جدا شده توسط کاما را شاخص گذاری می کند، هر آیتم (item) از آرایه را با یک شاخص عددی مقدار دهی می کند. به این معنی که هرگاه ما بخواهیم دومین مقدار از آیتم یعنی 'Jack' را در آرایه بازیابی کنیم، به آن شاخص 1 اختصاص داده شده است. توجه داشته باشید PHP شاخص آرایه ها را از شماره 0 شماره گذاری می کند، نه 1. به این معنی که آیتم 'Patrick' در خانه ی 0 و 'jack' در خانه ی 1 قرار دارد، و به همین ترتیب ادامه می یابد، که در زیر مثالی زده شده است:

برای یک مثال کاربردی تر، نگاهی به تابع ()wp_get_attachment_image_src کنید، که آرایه ای ایندکس شده از اطلاعات یک عکس بر می گرداند.

ما می توانیم URL، طول و عرض یک عکس را با استفاده از یک شاخص عددی در آرایه برگردانیم، توجه داشته باشید که آرگومان 7 اشاره به آی دی (ID) پیوست دارد، و در این مورد این عدد خودسرانه بوده، هدف فقط مثال است.

 

البته، شاید اعداد شاخص در آرایه کمی گیج کننده باشد، این کار، PHP به ما اجازه می دهد که آرایه های انجمنی داشته باشیم. خــوب، برگردیم به مثال names$. ما می توانیم به هر یک از آیتم ها در آرایه مان یک نام اختصاص دهیم:

ما این نام ها را کلید (keys) می نامیم. در این آرایه کلید 'designer' مقدار 'Jack' را دارد. برای به دست آوردن مقدار این کلید، می توانیم نام این کلید را در بین یک جفت براکت در جلوی نام آرایه قرار دهیم، مثل زیر:

 

آرایه های چند بعدی

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

 

این نوع از آرایه بسیار مفید است، اجازه می دهد که داخل حلقه (Loop) از آن استفاده کنیم، یک بار نشانه گذاری (markup) خود را می نویسیم و به PHP اجازه می دهیم که به هر تعداد که ممکن است تکرار کند.

 

ابزارهایی برای شناسایی

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

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

 

کنسول اشکال زدایی چیست؟

Debug Console یا کنسول اشکال زدا یکی از چند افزونه ی Debug Bar Plugin است که هیچ توسعه دهنده وردپرسی بدون آن نباید باشد. اگر در حال حاظر کنسول اشکال زدا در محیط توسعه خود ندارید، در اسرع وقت آن را نصب کنید.

وقتی از دو افزونه را نصب کردید، حال قادر خواهید بود از نوار مدیریت (Admin) خود به این کنسول دسترسی داشته باشید، که می توانید کد های PHP خود را در آنجا اجرا کنید. به جای اینکه وقت خود را برای ایجاد، ذخیره و refresh کردن فایل صرف کنید، می توانید تمام این کار ها را در مرورگر خود انجام دهید.

فقط کافی است که اجرا کرده و خروجی کار را در پایین صفحه مشاهده کتید. بهترین قسمت این است که، هر کجا کار خطایی بود، در قسمت گزارش نشان داده می شود.

من فقط بخشی از کارهایی که نوار اشکال زدایی می تواند انجام دهد را شرح دادم، هر دوی نوار اشکال زدا (Debug Bar) و (Console Bar) کلی امکانات جالب دیگر را هم دارا هستند، که افزونه ی Developer Plugin هم شامل می شود، که پیشنهاد می کنم از این پلاگین هم استفاده کنید. همانطور که کار با متا دیتا را یاد گرفتید، شاید افزونه ی Debug Bar Post Meta را پیدا کنید.

 

var_dump در مقابل print_r

حالا شما جایی را پیدا کرده اید که آرایه های خود را در آن آزمایش کنید. برای این کار، PHP به ما دو تابع سودمند می دهد

که برای شناسایی و تشخیص مفید است – ()var_dump و ()print_r

هر دوی این توابه متغیری را به عنوان ورودی دریافت و یک خروجی برای بررسی به ما برمیگرداند. ()var_dump حاوی اطلاعات بسیاری می باشد، مثل نوع داده (string, boolean, integer) و غیره و طول داده، در حالی که ()print_r طراحی شده است که برای ما بیشتر قابل درک باشد و اطلاعات اضافی را حذف کند.

 

استفاده از var_dump برای پیدا کردن index و key

var-dumpتصویر بالا از var_dump برای یک پست است. نشان می دهد که چگونه من از یک فیلد استفاده کرده ام. هدف من به دست آوردن مقدار فیلد متا دیتایی است که توسط پلاگین Yoast ایجاد شده است.

همانطور که var_dump را مشاهده می کنید، من تمام فیلد های متا دیتای پست با شماره یک را با استفاده از

تولید کرده ام. من با یک آرایه چند بعدی انجمنی (associative) کار کرده ام، که شامل یک آرایه ایندکس شده تنها با یک شاخص است. با بررسی var_dump، من پیدا کردم که آن کلیدی که لازم داشتم 'yoast_wpseo_title_' بود و در واقع این اطلاعاتی بود که در شاخص اول وجود داشت. برای دسترسی به آن من 'yoast_wpseo_title_' را در متغیر خود قرار دادم، و اولین شاخص از متغیر را به صورت زیر نمایش دادم:

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

این مهم است که در ذهن داشته باشیم که تابع

مقداری که ما می حواهیم را بر نمی گرداند، اما به جای آن یک آرایه بر می گرداند. با اضافه کردن مقدار true در آرگومان سوم، فقط می توانیم به اولین شاخص دست پیدا کنیم، چیزی که به آن نیاز داریم.

بنابراین، برای چاپ مستقیم عنوان SEO، تنها چیزی که لازم داریم خط زیر است:

 

 

استفاده از get_user_meta

تا کنون در این سری از آموزش، یاد گرفتیم که چگونه با جدول wp_postmeta کار کنیم، که شامل تمام فیلد های سفارشی اضافه شده در post type است.

کاربران می توانند زمینه های سفارشی (custom fields) خود را داشته باشنید. user meta data، اضافه کردن فیلد های اضافی در پروفایل کاربر همان طور کار می کند که در post meta data است، ولی آنها در جدول wp_usermeta ذخیره می شوند. هنگامی که با user meta data کار می کنیم، به جای ()get_post_meta از ()get_user_meta استفاده می کنیم.

این دو تابع کار یکسانی انجام می دهند، فقط داده ها را از دو جدول متفاوت در دیتابیس استخراج می کنند.

در زیر مثالی با استفاده از ()get_user_meta برای نمایش عکس به عنوان لینک را مشاهده کنید:

 

تا بعد

در این دو قسمت از این سری از آموزش، انواع متا دیتا های مختلف را مورد بررسی قرار دادیم، چگونه ذخیره می شوند، و چگونه می توان آنها را بازیابی کرد. علاوه بر این، نگاهی به دو نوع از آرایه ها در PHP انداختیم.

در قسمت بعد، می بینیم که چگونه می توانیم بطور دقیق هر نوع از داده را با انعطاف پذیری و قدرت زیاد سفارشی و چاپ کنیم.