FA-TOOLS — Header Component

راهنمای جامع افزودن فیلد سفارشی با ACF در وردپرس (از ساخت تا نمایش در پوسته)

خلاصه کاربردی مقاله:

افزودن فیلد سفارشی با ACF به شما امکان می‌دهد سیستم مدیریت محتوای وردپرس را از یک پایگاه ساده برای نوشته‌ها، به یک نرم‌افزار تحت وب پیشرفته و مدیریت‌شده تبدیل کنید. در این مقاله یاد می‌گیرید چگونه بدون افت سرعت سایت، انواع فیلدهای متنی، تصویری و تکرارکننده را بسازید، آن‌ها را ایمن فراخوانی کنید و با قابلیت Local JSON سرعت پایگاه داده خود را چند برابر کنید.

فیلدهای پیش‌فرض وردپرس مانند عنوان، متن‌اصلی و تصویر شاخص، جوابگوی ساخت وب‌سایت‌های مدرن مانند املاکی، فروشگاهی، یا معرفی کتاب نیستند. افزونه Advanced Custom Fields (ACF) دقیقاً برای حل این محدودیت طراحی شده است تا بتوانید اطلاعات ساختاریافته را به فرم ساخت نوشته اضافه کنید و مدیریت اطلاعات سایت را کاملاً استاندارد و منظم پیش ببرید.

فیلد سفارشی چیست و چرا افزونه ACF بهترین انتخاب است؟

افزودن فیلد سفارشی با ACF — تصویر 1

پاسخ کوتاه: فیلد سفارشی (Custom Field) داده‌ای اضافه است که به پست‌ها، برگاه‌ها یا پست‌تایپ‌های وردپرس متصل می‌شود و ACF ابزاری گرافیکی برای مدیریت بی‌دردسر این داده‌ها در پایگاه‌داده بدون نیاز به کدنویسی پیچیده فراهم می‌کند.

وردپرس به‌طور نیتیو سیستم متادیتا (Post Meta) دارد، اما رابط کاربری آن بسیار ساده و ابتدایی است. افزونه ACF رابط کاربری بسیار پیشرفته‌ای ارائه می‌دهد که بیش از ۳۰ نوع فیلد مختلف (مانند متنی، آپلود فایل، نقشه گوگل، انتخاب‌گر رنگ، و ارتباط بین نوشته‌ها) را به پیشخوان وردپرس می‌افزاید.

آموزش گام‌به‌گام ساخت اولین فیلد سفارشی در ACF

افزودن فیلد سفارشی با ACF — تصویر 2

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

  1. نصب افزونه: از بخش افزونه‌ها > افزودن، عبارت Advanced Custom Fields را جستجو و فعال کنید.
  2. ایجاد گروه فیلد جدید: به منوی «ACF» یا «فیلدهای سفارشی» رفته و روی گزینه «افزودن جدید» (Add New) کلیک کنید.
  3. تنظیم عنوان گروه: یک عنوان مشخص (مثلاً «اطلاعات محصول») برای این دسته از فیلدها انتخاب کنید.
  4. افزودن فیلد: روی دکمه «افزودن فیلد» کلیک کنید. در این بخش سه مقدار مهم را باید تنظیم کنید:
    • برچسب فیلد (Field Label): نامی که کاربر در پیشخوان می‌بیند (مثلاً: قیمت محصول).
    • نام فیلد (Field Name): شناسه یکتای لاتین برای استفاده در کدهای قالب (مثلاً: product_price).
    • نوع فیلد (Field Type): انتخاب فرمت داده (متن، عدد، تصویر، ایمیل و…).
  5. تعیین قوانین مکان (Location Rules): مشخص کنید این فیلد در چه بخش‌هایی ظاهر شود (مثلاً: اگر نوع نوشته برابر با «محصول» بود).
  6. انتشار: تغییرات را ذخیره کنید. حالا فیلد در صفحه ویرایش نوشته مربوطه نمایش داده می‌شود.

نحوه فراخوانی و نمایش فیلدها در کدهای قالب وردپرس

افزودن فیلد سفارشی با ACF — تصویر 3

پاسخ کوتاه: برای نمایش مقدار فیلد سفارشی در فایل‌های قالب، ساده‌ترین روش استفاده از تابع the_field('field_name'); برای چاپ مستقیم و get_field('field_name'); برای دریافت مقدار در متغیر است.

اگر قصد دارید اطلاعات ذخیره‌شده را در پوسته وب‌سایت خود نمایش دهید، باید فایل مربوطه در پوسته (مانند single.php یا page.php) را ویرایش کنید. در ادامه نمونه‌های پرکاربرد کدنویسی با ACF آورده شده است. اگر تمایل دارید دسترسی سریع به کدهای آماده داشته باشید، بررسی بخش تکه‌کدهای وردپرس نیز به شما کمک خواهد کرد.

۱. نمایش فیلد متنی ساده

<?php 
$price = get_field('product_price');
if ( $price ) : ?>
    <div class="product-price">
        <span>قیمت: </span><?php echo esc_html($price); ?> تومان
    </div>
<?php endif; ?>

۲. نمایش فیلد تصویر (Return Value روی Array)

وقتی تنظمات بازگشتی فیلد تصویر را روی “Image Array” قرار می‌دهید، ساختار تصویر با ویژگی‌های استاندارد بارگذاری می‌شود:

<?php 
$image = get_field('custom_image');
if ( !empty( $image ) ) : ?>
    <img src="<?php echo esc_url($image['url']); ?>" alt="<?php echo esc_attr($image['alt']); ?>" />
<?php endif; ?>

جدول مقایسه پرکاربردترین انواع فیلدهای ACF

افزودن فیلد سفارشی با ACF — تصویر 4

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

نوع فیلد (Field Type) کاربرد اصلی و سناریو
Text / Textarea ذخیره داده‌های متنی کوتاه یا توضیحات چند خطی بدون فرمت CSS.
Wysiwyg Editor ایجاد یک ویرایشگر کامل دیداری برای درج متن همراه با لینک و استایل.
Image / File دریافت فایل یا عکس و اتصال آن به کتابخانه رسانه وردپرس.
Repeater (نسخه پروی) ساخت سطرها و تکرار فیلدها به تعداد دلخواه (مثل لیست ویژگی‌های یک محصول).
Relationship / Post Object ارتباط دادن یک نوشته به نوشته‌ها، برگه‌ها یا پست‌تایپ‌های دیگر.
True / False ایجاد سوییچ تک‌گزینه‌ای (بله/خیر) برای فعال/غیرفعال‌سازی ویژگی‌ها.

۳ نکته تخصصی برای بهینه‌سازی سرعت و امنیت ACF

افزودن فیلد سفارشی با ACF — تصویر 5

بسیاری از توسعه‌دهندگان پس از نصب ACF با مشکل کندی وب‌سایت یا بروز چالش‌های امنیتی مواجه می‌شوند. رعایت این سه نکته طلایی، کیفیت پروژه شما را در سطح حرفه‌ای تضمین می‌کند:

  • ۱. فعال‌سازی ویژگی Local JSON:
    به طور پیش‌فرض تنظیمات ACF در دیتابیس ذخیره می‌شود. با ایجاد یک پوشه به نام acf-json در پوشه پوسته فعال خود، افزونه تمامی گروه‌های فیلد را در قالب فایل‌های JSON ذخیره می‌کند. این کار علاوه بر انتقال آسان تنظیمات بین محیط لوکال‌هاست و سرور اصلی، تعداد کوئری‌های دیتابیس (Database Queries) را در هر بارگذاری به شدت کاهش می‌دهد.
  • ۲. پاک‌سازی و ایمن‌سازی خروجی‌ها (Output Escaping):
    هرگز مقدار خروجی تابع را مستقیم بدون پاک‌سازی چاپ نکنید. همواره از توابع ایمن‌سازی وردپرس استفاده کنید. برای داده‌های متنی ساده از esc_html()، برای آدرس‌ها از esc_url() و برای متون حاوی HTML از wp_kses_post() استفاده کنید. برای مطالعه کدهای استاندارد بدین منظور، می‌توانید از بخش مجموعه کدهای HTML استفاده کنید.
  • ۳. تفاوت کلیدی get_field و get_post_meta:
    تابع get_field() داده‌ها را پردازش کرده و متناسب با نوع فیلد، آرایه یا شیء می‌سازد. اگر در یک حلقه (Loop) با تعداد بالا فقط به متن ساده نیاز دارید، استفاده از تابع نیتیو وردپرس یعنی get_post_meta($post_id, 'field_name', true) سریع‌تر عمل کرده و حافظه RAM کمتری روی سرور مصرف می‌کند.

پرسش‌های متداول

آیا افزونه ACF باعث کندی سرعت وب‌سایت وردپرسی می‌شود؟

خود افزونه به تنهایی کندی ایجاد نمی‌کند. اما اگر از فیلدهای تکرارکننده (Repeater) سنگین به صورت غیربهینه یا تعداد کوئری‌های زیاد بدون کشینگ استفاده کنید، ممکن است زمان پاسخ‌دهی دیتابیس افزایش یابد.

تفاوت نسخه رایگان و پرو (ACF Pro) چیست؟

نسخه پرو قابلیت‌های مهمی مانند فیلد تکرارکننده (Repeater)، فیلد انعطاف‌پذیر (Flexible Content)، ساخت صفحات تنظیمات (Options Page)، گالری تصویر اختصاصی و قابلیت ساخت بلوک‌های سفارشی گوتنبرگ را به افزونه اضافه می‌کند.

چگونه فیلد سفارشی را در صفحه تنظیمات کلی سایت (Options Page) نشان دهیم؟

با نسخه پرو و ثبت تابع acf_add_options_page() در فایل functions.php یک صفحه تنظیمات در پیشخوان ایجاد می‌شود. سپس برای فراخوانی فیلدها کافیست پارامتر دوم را ‘option’ بگذارید: get_field('field_name', 'option');.

آیا موتورهای جویای سئو می‌توانند محتوای فیلدهای ACF را ایندکس کنند؟

بله، به محض اینکه کدهای فراخوانی را در پوسته قرار دهید و محتوای فیلد در کد HTML نهایی کلاینت رندر شود، ربات‌های گوگل و افزونه‌های سئو (مانند Yoast یا Rank Math) آن را پردازش و ایندکس می‌کنند.

راهنمای عیب‌یابی سریع مشکلات ACF

مشکل ۱: مقدار get_field خروجی خالی (Null یا False) می‌دهد.

علت و راه‌حل: ابتدا بررسی کنید که نام فیلد (Field Name) را دقیقاً وارد کرده باشید، نه برچسب آن را. اگر کد را خارج از حلقه اصی وردپرس (The Loop) نوشته‌اید، باید ID پست را به عنوان پارامتر دوم ارسال کنید: get_field('field_name', $post_id);.

مشکل ۲: تصویر خروجی به صورت لایه متنی عجیبی مثل “241” نمایش داده می‌شود.

علت و راه‌حل: مقدار تنظیمات بازگشتی فیلد تصویر (Return Value) در تنظیمات ACF روی “Image ID” قرار دارد. باید آن را در تنظیمات گروه فیلد به “Image Array” یا “Image URL” تغییر دهید یا در کد PHP از تابع wp_get_attachment_image_url($id) استفاده کنید.

مشکل ۳: عدم استایل‌پذیری فیلدها در پوسته سایت.

علت و راه‌حل: خروجی کدهای ACF تگ‌های HTML ساده ایجاد می‌کند. حتماً خروجی‌ها را درون دایو‌ها (Div) با کلاس‌های مشخص بپیچید و سپس با اضافه کردن استایل از طریق قطعه کدهای CSS چیدمان آن‌ها را منظم کنید.

سوالات متداول

فیلد سفارشی (Custom Field) در وردپرس چیست؟

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

تابع get_field و the_field در ACF چه تفاوتی دارند؟

تابع the_field مقدار فیلد را مستقیماً در صفحه چاپ می‌کند، در حالی که get_field مقدار را برای پردازش‌های بعدی یا ذخیره در متغیر بازمی‌گرداند. برای رعایت نکات امنیتی و بررسی‌های شرطی بهتر است از get_field استفاده کنید.

چگونه سرعت افزونه ACF را در وردپرس بهینه‌سازی کنیم؟

با فعال‌سازی قابلیت Local JSON و ذخیره تنظیمات فیلدها در پوشه acf-json قالب، تعداد کوئری‌های دیتابیس به شدت کاهش می‌یابد. این کار سرعت بارگذاری صفحات را افزایش داده و انتقال بین محیط لوکال و سرور را آسان می‌سازد.

آیا استفاده از افزونه ACF باعث کندی وب‌سایت می‌شود؟

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

Table of Contents

آخرین نوشته‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *