הגדרת שדות מותאמים אישית של ACF: מאב-טיפוס לייצור

עורכים מבזבזים שעות במילוי שדות חוזרים ולעתים קרובות טועים בפורמטים של נתונים. אנו מגדירים ACF עבור WordPress, והופכים metaboxes סטנדרטיים לטפסים ידידותיים למשתמש עם לוחות שנה, רשימות ובלוקים חוזרים. הצוות שלנו מספק את הפרויקט במפתח מלא—מאב-טיפוס ועד תמיכה שוטפת—כך שהתוכן מוזן במהירות וללא שגיאות.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הגדרת שדות מותאמים אישית של ACF: מאב-טיפוס לייצור
פשוט
מ- 1 יום עד 3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1501
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1306
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1049
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

הגדרת שדות מותאמים אישית של ACF: מאב-טיפוס לייצור

תארו לעצמכם: עורך צריך למלא כרטיס מוצר עם 50 פרמטרים. תיבות מטא רגילות מאלצות אותו לגלול ברשימה אינסופית של שדות טקסט. שגיאות הן בלתי נמנעות: תאריכים מקולקלים, קישורים שבורים, מספרים מוחלפים. שילבנו Advanced Custom Fields עם קבוצות שדות וריפיטרים מקוננים—מהירות ההזנה שולשה, השגיאות ירדו לאפס. העורך מקבל טפסים ברורים, בעוד שהקוד נשאר נקי וניתן לתחזוקה. פרויקט טיפוסי עם 10 קבוצות שדות לוקח 4–6 שעות במקום 10–15 כשעושים זאת ידנית—הפרש של פי 2–3. הזמינו הגדרת ACF סוהר והאיצו את הזנת התוכן.

הזנת נתונים לא נוחה היא נקודת כאב קלאסית. תיבות מטא רגילות של וורדפרס הן שדות טקסט ללא רמזים. העורך עושה טעויות בפורמט תאריך, כתובות URL, מספרים. ACF מספק לוח שנה, מחוונים, תפריטים נפתחים. מורכבות התמיכה נפתרת גם היא: כשיש הרבה שדות, קוד עם add_meta_box ו-update_post_meta הופך לספגטי. ACF מקבץ שדות, תומך בלוגיקה מותנית ובסנכרון JSON. Flexible Content מאפשר לעורך להרכיב עמוד מבלוקים (hero, טקסט, גלריה). אנו מגדירים את הלוגיקה פעם אחת; העורך משתמש בה במשך שנים.

אילו בעיות אנו פותרים עם ACF

  • הזנת נתונים לא נוחה. ACF מחליף שדות טקסט בלוח שנה, מחוונים, תפריטים נפתחים. אין יותר שגיאות פורמט.
  • תחזוקה מורכבת. קיבוץ שדות, תצוגה מותנית וסנכרון JSON מפשטים את תמיכת הקוד.
  • גמישות ללא תכנות. Flexible Content נותן לעורך יכולת לבנות עמוד מבלוקים מוגדרים מראש ללא ידע ב-PHP.
קריטריונים ACF תיבות מטא ידניות
זמן הגדרה עבור 10 שדות 2–4 שעות 6–8 שעות
חוויית עורך גבוהה (סוגי שדות UI) נמוכה (טקסט פשוט)
ביצועי שאילתות בינוניים (100+ שדות עלולים להאט) תלוי ביישום
מהירות פיתוח פי 2–3 מהר יותר איטית יותר

כיצד ACF מפשט את עבודת העורך?

אנו רושמים קבוצות שדות באופן פרוגרמטי—זו הסטנדרט לייצור. הקוד חי בתוך התמה ומנוהל גרסאות ב-Git. דוגמה לקבוצה "פרטי פרויקט":

add_action('acf/init', function () {
    acf_add_local_field_group([
        'key' => 'group_project_details',
        'title' => 'Детали проекта',
        'fields' => [
            [
                'key' => 'field_project_client',
                'label' => 'Клиент',
                'name' => 'project_client',
                'type' => 'text',
                'required' => 1,
                'placeholder' => 'Название компании',
            ],
            [
                'key' => 'field_project_year',
                'label' => 'Год реализации',
                'name' => 'project_year',
                'type' => 'number',
                'min' => 2000,
                'max' => 2030,
                'default_value' => date('Y'),
            ],
            [
                'key' => 'field_project_url',
                'label' => 'URL проекта',
                'name' => 'project_url',
                'type' => 'url',
            ],
            [
                'key' => 'field_project_tech_stack',
                'label' => 'Технологии',
                'name' => 'project_tech_stack',
                'type' => 'checkbox',
                'choices' => [
                    'react' => 'React',
                    'vue' => 'Vue.js',
                    'laravel' => 'Laravel',
                    'wordpress' => 'WordPress',
                    'nextjs' => 'Next.js',
                ],
                'layout' => 'horizontal',
            ],
            [
                'key' => 'field_project_gallery',
                'label' => 'Галерея скриншотов',
                'name' => 'project_gallery',
                'type' => 'gallery',
                'min' => 0,
                'max' => 20,
                'mime_types' => 'jpg,jpeg,png,webp',
                'return_format' => 'array',
            ],
        ],
        'location' => [
            [
                ['param' => 'post_type', 'operator' => '==', 'value' => 'project']
            ],
        ],
        'menu_order' => 0,
        'position' => 'normal',
        'style' => 'seamless',
        'label_placement' => 'top',
    ]);
});

מדוע לרשום שדות דרך קוד במקום ממשק הניהול?

ממשק הניהול של ACF נוח לאבות טיפוס מהירים, אך בייצור מוביל לבעיות: התצורה מאוחסנת במסד הנתונים, קשה לנהל גרסאות, ושדות עלולים להיעלם בעת העברה. קוד הוא השיטה האמינה היחידה. תיעוד ACF ממליץ על גישה זו לייצור.

ריפיטר—בלוקי נתונים הניתנים לחזרה

[ 'key' => 'field_project_results', 'label' => 'Результаты проекта', 'name' => 'project_results', 'type' => 'repeater', 'min' => 1, 'max' => 10, 'layout' => 'table', 'button_label' => 'Добавить результат', 'sub_fields' => [ ['key' => 'field_result_metric', 'label' => 'Метрика', 'name' => 'metric', 'type' => 'text', 'placeholder' => 'Конверсия'], ['key' => 'field_result_before', 'label' => 'До', 'name' => 'before', 'type' => 'text', 'placeholder' => '1.2%'], ['key' => 'field_result_after', 'label' => 'После', 'name' => 'after', 'type' => 'text', 'placeholder' => '3.8%'], ], ], 

פלט נתונים בצד הלקוח: add_action('acf/init', function () { acf_add_local_field_group([ 'key' => 'group_project_details', 'title' => 'Детали проекта', 'fields' => [ [ 'key' => 'field_project_client', 'label' => 'Клиент', 'name' => 'project_client', 'type' => 'text', 'required' => 1, 'placeholder' => 'Название компании', ], [ 'key' => 'field_project_year', 'label' => 'Год реализации', 'name' => 'project_year', 'type' => 'number', 'min' => 2000, 'max' => 2030, 'default_value' => date('Y'), ], [ 'key' => 'field_project_url', 'label' => 'URL проекта', 'name' => 'project_url', 'type' => 'url', ], [ 'key' => 'field_project_tech_stack', 'label' => 'Технологии', 'name' => 'project_tech_stack', 'type' => 'checkbox', 'choices' => [ 'react' => 'React', 'vue' => 'Vue.js', 'laravel' => 'Laravel', 'wordpress' => 'WordPress', 'nextjs' => 'Next.js', ], 'layout' => 'horizontal', ], [ 'key' => 'field_project_gallery', 'label' => 'Галерея скриншотов', 'name' => 'project_gallery', 'type' => 'gallery', 'min' => 0, 'max' => 20, 'mime_types' => 'jpg,jpeg,png,webp', 'return_format' => 'array', ], ], 'location' => [ [['param' => 'post_type', 'operator' => '==', 'value' => 'project']], ], 'menu_order' => 0, 'position' => 'normal', 'style' => 'seamless', 'label_placement' => 'top', ]); }); בלולאת [ 'key' => 'field_project_results', 'label' => 'Результаты проекта', 'name' => 'project_results', 'type' => 'repeater', 'min' => 1, 'max' => 10, 'layout' => 'table', 'button_label' => 'Добавить результат', 'sub_fields' => [ ['key' => 'field_result_metric', 'label' => 'Метрика', 'name' => 'metric', 'type' => 'text', 'placeholder' => 'Конверсия'], ['key' => 'field_result_before', 'label' => 'До', 'name' => 'before', 'type' => 'text', 'placeholder' => '1.2%'], ['key' => 'field_result_after', 'label' => 'После', 'name' => 'after', 'type' => 'text', 'placeholder' => '3.8%'], ], ], . אנו משתמשים בקוד שלהלן בתבניות פרויקט.

if (have_rows('project_results')) {
    echo '<table class="results-table">';
    echo '<thead><tr><th>Метрика</th><th>До</th><th>После</th></tr></thead><tbody>';
    while (have_rows('project_results')) {
        the_row();
        printf('<tr><td>%s</td><td>%s</td><td>%s</td></tr>', esc_html(get_sub_field('metric')), esc_html(get_sub_field('before')), esc_html(get_sub_field('after')) );
    }
    echo '</tbody></table>';
}

Flexible Content—בונה עמודים

מאפשר לעורך להרכיב עמוד מסוגי בלוקים שונים: hero, טקסט, עמודות. אנו מכינים את הפריסות, והעורך ממלא אותן בתוכן.

[ 'key' => 'field_page_sections', 'label' => 'Секции страницы', 'name' => 'page_sections', 'type' => 'flexible_content', 'button_label' => 'Добавить секцию', 'layouts' => [
    'hero' => [
        'key' => 'layout_hero',
        'name' => 'hero',
        'label' => 'Hero-баннер',
        'sub_fields' => [
            ['key' => 'field_hero_title', 'label' => 'Заголовок', 'name' => 'title', 'type' => 'text'],
            ['key' => 'field_hero_bg', 'label' => 'Фон', 'name' => 'bg', 'type' => 'image', 'return_format' => 'array'],
            ['key' => 'field_hero_button', 'label' => 'Кнопка', 'name' => 'button', 'type' => 'link'],
        ],
    ],
    'text_columns' => [
        'key' => 'layout_text_columns',
        'name' => 'text_columns',
        'label' => 'Текст в колонках',
        'sub_fields' => [
            ['key' => 'field_tc_cols', 'label' => 'Колонки', 'name' => 'columns', 'type' => 'repeater', 'sub_fields' => [
                ['key' => 'field_tc_text', 'name' => 'text', 'label' => 'Текст', 'type' => 'wysiwyg'],
            ]],
        ],
    ],
],
]

תצוגה מותנית של שדות

ACF מאפשר להציג שדה רק כאשר לשדה אחר יש ערך ספציפי. לדוגמה, הצגת טקסט כפתור CTA רק אם המתג מופעל.

[ 'key' => 'field_show_cta', 'label' => 'Показать CTA', 'name' => 'show_cta', 'type' => 'true_false', 'ui' => 1, ],
[ 'key' => 'field_cta_text', 'label' => 'Текст кнопки', 'name' => 'cta_text', 'type' => 'text', 'conditional_logic' => [ [['field' => 'field_show_cta', 'operator' => '==', 'value' => '1']], ], ],

סנכרון JSON

ACF PRO שומר אוטומטית קבוצות שדות לקבצים get_sub_field בעת שינוי דרך ממשק הניהול. אנו מתחייבים לקבצים אלה ב-Git, ובסביבה אחרת לוחצים על Sync. לאוטומציה, אנו משתמשים ב-have_rows בתוסף חיוני (must-use).

טעויות נפוצות וכיצד להימנע מהן

  • שדות ריקים לאחר שמירה—לעתים קרובות עקב חוסר בבדיקת if (have_rows('project_results')) { echo '<table class="results-table">'; echo '<thead><tr><th>Метрика</th><th>До</th><th>После</th></tr></thead><tbody>'; while (have_rows('project_results')) { the_row(); printf('<tr><td>%s</td><td>%s</td><td>%s</td></tr>', esc_html(get_sub_field('metric')), esc_html(get_sub_field('before')), esc_html(get_sub_field('after')) ); } echo '</tbody></table>'; } : השתמשו תמיד ב-[ 'key' => 'field_page_sections', 'label' => 'Секции страницы', 'name' => 'page_sections', 'type' => 'flexible_content', 'button_label' => 'Добавить секцию', 'layouts' => [ 'hero' => [ 'key' => 'layout_hero', 'name' => 'hero', 'label' => 'Hero-баннер', 'sub_fields' => [ ['key' => 'field_hero_title', 'label' => 'Заголовок', 'name' => 'title', 'type' => 'text'], ['key' => 'field_hero_bg', 'label' => 'Фон', 'name' => 'bg', 'type' => 'image', 'return_format' => 'array'], ['key' => 'field_hero_button', 'label' => 'Кнопка', 'name' => 'button', 'type' => 'link'], ], ], 'text_columns' => [ 'key' => 'layout_text_columns', 'name' => 'text_columns', 'label' => 'Текст в колонках', 'sub_fields' => [ ['key' => 'field_tc_cols', 'label' => 'Колонки', 'name' => 'columns', 'type' => 'repeater', 'sub_fields' => [ ['key' => 'field_tc_text', 'name' => 'text', 'label' => 'Текст', 'type' => 'wysiwyg'], ], ], ], ], ], ], .
  • שדות שנשכחו בתבניות—בדקו עם [ 'key' => 'field_show_cta', 'label' => 'Показать CTA', 'name' => 'show_cta', 'type' => 'true_false', 'ui' => 1, ], [ 'key' => 'field_cta_text', 'label' => 'Текст кнопки', 'name' => 'cta_text', 'type' => 'text', 'conditional_logic' => [ [['field' => 'field_show_cta', 'operator' => '==', 'value' => '1']], ], ], או /acf-json/*.json עם ערך חלופי.
  • סוג נתונים שגוי—ACF אינו מאמת אוטומטית; השתמשו בפונקציות acf_sync_field_groups().
סוג שדה זמן טעינה ממוצע לעמוד (10 שדות) המלצות
טקסט 2ms אין הגבלות
תמונה 50ms (עם 5 תמונות) השתמשו ב-get_field() ובטעינה עצלה
גלריה 100ms (10 תמונות) שמרו במטמון או פלטו דרך AJAX
ריפיטר (10 שורות) 20ms השתמשו ב-get_field('name', $post_id) ?: 'default' במקום have_rows() עבור קבוצות גדולות
Flexible Content (5 בלוקים) 40ms קבצו פריסות ושמרו תוצאות במטמון

מה כלול בעבודה סוהר

  • ביקורת של שדות המטא וסוגי הפוסטים הנוכחיים.
  • עיצוב מבנה שדות ACF למשימות שלכם.
  • רישום פרוגרמטי של כל קבוצות השדות ב-functions.php או בתוסף נפרד.
  • הגדרת ריפיטרים, flexible content, לוגיקה מותנית ודפי אפשרויות.
  • יצירת תבניות פלט בצד הלקוח.
  • ייצוא תצורה ל-JSON והגדרת סנכרון.
  • תיעוד שדות ושימושיהם.
  • בדיקת ביצועים ואופטימיזציה של שאילתות במידת הצורך.
  • הדרכת עורכים (בסיסית).

תהליך העבודה

  1. ניתוח. אנו לומדים סוגי תוכן, שדות מטא נוכחיים וצרכי העורך.
  2. עיצוב. אנו יוצרים פריסה של קבוצות שדות: סוגים, קשרים, תצוגות מותנות.
  3. יישום. אנו מתכנתים רישום שדות ופלט. שימוש ב-PHP 8.x, Composer, פרקטיקות מודרניות.
  4. בדיקות. אנו בודקים את כל התרחישים: יצירה, עריכה, פלט, מטמון.
  5. פריסה. סנכרון דרך JSON, העברת תיעוד.

לוח זמנים: מ-3 עד 10 ימי עבודה בהתאם למורכבות (מספר שדות, קינון, מספר סוגי פוסטים). התמחור אישי. מוכנים לפתור את המשימה שלכם? צרו קשר להערכת עלות.

למה לבחור בנו

מעל 5 שנות ניסיון בפיתוח אתרים. השלמנו יותר מ-50 פרויקטי וורדפרס עם ACF. אנו מבטיחים פעילות יציבה של שדות ותיקון באגים בזמן לאחר המסירה. אנו שומרים על קוד נקי—ללא תוספים מיותרים. מוכנים לארגן את פאנל הניהול שלכם? צרו קשר—נמצא מבנה ACF אופטימלי לפרויקט שלכם. קבלו ייעוץ דרך הטופס באתר או במסנג'ר.