سلام همراهان گرامی. با قسمت دوم از آموزش «اکشن ها، هوکها و فیلترها در وردپرس» در خدمت شما هستیم. قسمت قبلی را می توانید از اینجا مطالعه کنید.
جمله ی «وقتی جک رسید و از خودش تعریف و تمجید کرد، رویش را کم کنید و نظرش را در اینباره عوض کنید.» را به یاد دارید؟
ما می توانیم «نظر جک راجع به خودش» را با استفاده از هوک کردن به یک فیلتر عوض کنیم. با استفاده از add_filter می توانیم یک عملکرد را اصلاح کنیم یا چیزی را در نقطه ای خاص تغییر دهیم.
عمل «کم کردن روی جک و تغییر نظر او راجع به خودش» در کد php به شکل زیر می شود:
// Cut Jack's boasting add_filter( 'jacks_boast' , 'cut_the_boasting'); function cut_the_boasting($boast) { // Replace "best" with "second-best" $boast = str_replace ( "best" , "second-best" , $boast ); // Append another phrase at the end of his boast $boast = $boast . ' However, Gill can outshine me any day.'; return $boast; }<br>
در کد بالا چکار کردیم:
به زبان ساده add_filter به وردپرس می گوید که یک دیتا را با چیزی که ما می خواهیم عوض کند. چه زمانی وردپرس این عملیات تعویض را انجام دهد؟ زمانی که به فیلترهوکی با نام jacks_boast رسید.
پس فقط زمانی می توانیم از add_filter استفاده کنیم که مطمئن باشیم فیلترهوکی با نام jacks_boast در کد ما (پوسته یا افزونه) تعریف شده است. روشن است که اگر این هوک وجود نداشته باشد، فانکشن ما هرگز فراخوانی و اجرا نخواهد شد. بنابراین باید در پشت صحنه ی کدهای پوسته یا افزونه ی ما کدی مثل زیر وجود داشته باشد:
echo apply_filters('jacks_boast', "I'm the best in the world.");
این کد به وردپرس می گوید که یک فیلتر با نام jacks_boast ایجاد کند و هر فیلتری را که به آن (هوک) وابسته شده را اجرا کند و همچنین رشته ای (string) با عنوان «من بهترین هستم» یا I’m the best in the world را نیز به فیلترها پاس دهد. اگر هیچ فیلتری به هوک متصل نباشد، آنگاه می توان با استفاده از فانکشن apply_filters ، رشته ی مذکور را بازگردانی یا return کرد.
در مثال زیر می خواهیم آدرس url مربوط به لوگوی سایت را تغییر دهیم.
// Change url that is linked from logo add_filter( 'tc_logo_link_url', 'change_site_main_link' ); function change_site_main_link() { return 'http://example.com'; }<br>
البته در رابطه با هوکِ tc_logo_link_url ، فرض بر آن است که ما در فایلی دیگر از سایت خود کد زیر را تعریف کرده ایم.
apply_filters( ‘tc_logo_link_url’, esc_url( home_url( ‘/’ ) ) )
فانکشن esc_url کاراکتر های موجود و هر چیزی که هست را حذف می کند و در مقابل، فانکشن home_url آدرس برگه ی خانه ی سایت را دوباره بازیابی می کند. بنابراین اگر هیچ گونه فیلتر کردنی در کار نباشد، فیلتر tc_logo_link_url آدرس برگه ی خانه ی سایت را بازگردانی خواهد کرد.
نکته: به خاطر داشته باشید که در استفاده از فیلترها همیشه باید چیزی را بازگردانی (return) کنید.
حالا که می دانید هوک ها چگونه کار می کنند، می بینید که چرا داشتن دانشِ استفاده از هوک ها برای همه ی توسعه دهندگان وردپرس ضروری است. این موارد بسیار کاربردی هستند، حتی اگر توسعه دهنده ی حرفه ای نباشید و صرفا بخواهید تغییراتی در سایت خود ایجاد کنید.
با داشتن دانش استفاده از هوک ها می توانید:
به طور کلی فهمیدن و مسلط شدن به کار با هوک ها ممکن است چند ساعت وقت شما را بگیرد، اما در عوض کار شما را آسان تر می کند و در آینده زمان زیادی را برای شما خواهد خرید.
مثال هایی که تا اینجا برای شما آوردیم همگی به درستی کار می کنند. اگر یک وب سایت وردپرسی را روی هاست یا روی کامپیوتر خود به صورت لوکال نصب کرده باشید، می توانید کدهایی که تا اینجا برایتان مثال زدیم را خودتان در فایل functions.php استفاده نمایید.
چند چیزی که باید به خاطر داشته باشید:
1.در مثال اولی مربوط به گیل که از add_action در آن استفاده کردیم، باید کد زیر را درون کدهای قالب خود جای دهید چرا که هوک از قبل تعریف شده باشد:
do_action( ‘after_gill_arrives’ , $gill_has_keys = true , $gill_has_car = true );
2. اگر هر دو ارگومان (gill_has_keys$ و gill_has_car$) مقدار true را بگیرند، آنگاه عبارت «گیل لطفا برو نقاشی بخر و بیاور.دستت درد نکنه!» در بالای برگه ی شما نمایش داده خواهد شد. اگر یکی از این دو آرگومان، مقدارش برابر با false شود، آنگاه این عبارت نمایش داده نخواهد شد.
3. در مثال های بعدی هم که کد مربوط به تعریف هوک را نوشتیم. (after_header را تعریف کردیم)
4. در مثال مربوط به فیلتر باید کد زیر را برای نمایش عبارت تغییر کرده، به کد خود اضافه کنید: (قبلا گفتیم که apply_filters چکار می کند)
echo apply_filters(‘jacks_boast’,”I’m the best in the world.”);
5. در مثال مربوط به تغییر آدرس url لوگوی سایت، فیلتر هوک tc_logo_link_url نیز باید درون کدهای قالب تعریف می شد.
6. کدها باید در فایل functions.php کپی شوند. اما برای کاهش ریسک بهتر است از یک child theme برای اعمال تغییرات استفاده کنید. زیرا با این کار نیازی به تغییر فایل functions.php اصلی قالب خود نیست. به یاد داشته باشید که قبل از اعمال تغییر در فایل functions.php قالب، حتما یک یکآپ از آن را تهیه کنید تا در صورت بروز مشکل بتوانید آن را رفع نمایید.
در ادامه می توانید با بررسی کدهای وردپرسی موجود در سایت خود به کاوش در اکشن ها و فیلترها و هوک ها بپردازید تا ایده های بیشتری در باره ی کاربرد آن ها پیدا کنید. این آموزش ابتدای کار است و سعی کنید با تمرین زیاد در استفاده از این موارد حرفه ای شوید.
سوالات و نظرات خود را در پایین همین برگه با ما به اشتراک بگذارید. به پایان این آموزش رسیدیم. امیدوارم که این آموزش برای شما مفید واقع شده باشد. موفق و سربلند باشید.
منبع: سایت Press Customizr Documenta
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.