אם אתם עובדים על פרויקטי וורדפרס עם מספר סביבות – פיתוח מקומי, staging וייצור – אתם יודעים כמה מתסכל לשמור על סנכרון של קבוצות שדות Advanced Custom Fields (ACF) בין כולן.
במדריך זה תלמדו כיצד פיצ'ר ה-Local JSON של ACF עובד, כיצד להפעיל אותו, כיצד לסנכרן קבוצות שדות בין סביבות, וכיצד להתאים אישית נתיבי שמירה וטעינה לתהליכי עבודה מתקדמים.
Local JSON זמין בגרסה החינמית של ACF מאז גרסה 6.0. אין צורך ב-ACF PRO כדי להשתמש בפיצ'ר זה. הוא עובד עם קבוצות שדות, סוגי תוכן, טקסונומיות ודפי אפשרויות.
הבעיה: שמירה על סנכרון שדות
ללא Local JSON, העברת קבוצות שדות ACF בין סביבות דורשת ייצוא וייבוא ידני של קבצי JSON/PHP, או סנכרון מלא של מסד הנתונים. שתי הגישות מסורבלות ופתוחות לטעויות.
גם שינויים קטנים – כמו הוספת שדה בודד לקבוצה – חייבו ביצוע ידני של אותו שינוי בכל סביבה, או ביצוע מיגרציית מסד נתונים מלאה שעלולה לדרוס נתונים אחרים.
כתבתי בהרחבה על ACF ומשתמש בו כמעט בכל פרויקט מותאם אישית. Local JSON פותר את בעיית הסנכרון בצורה אלגנטית על ידי הפיכת הגדרות השדות לקבצים מנוהלי גרסאות.
מה זה ACF Local JSON?
Local JSON שומר אוטומטית את קבוצות השדות של ACF כקבצי JSON בתוך תיקיית התבנית. בכל פעם שאתם יוצרים או עורכים קבוצת שדות בממשק הניהול, ACF כותב קובץ JSON מתאים. המשמעות:
- הגדרות השדות חיות במערכת הקבצים, לא רק במסד הנתונים
- ניתן לעקוב אחר שינויים עם Git לצד קוד התבנית
- ניתן לפרוס שינויי שדות על ידי דחיפת קבצים בלבד – ללא ייצוא/ייבוא
- ACF טוען שדות מקבצי JSON קודם, מה שמהיר יותר משאילתות מסד נתונים
כל קבוצת שדות נשמרת כקובץ JSON נפרד, שנקרא לפי המפתח הייחודי של הקבוצה (למשל, group_abc123.json). הקובץ מכיל את כל הגדרות השדות, כולל תתי-שדות, לוגיקה מותנית וכללי תצוגה.
כיצד להפעיל Local JSON
צרו תיקייה בשם acf-json בתוך תיקיית התבנית הפעילה (או תבנית הבת):
mkdir wp-content/themes/your-theme/acf-jsonלטובת אבטחה, הוסיפו קובץ index.php כדי למנוע הצגת תוכן התיקייה:
<?php // Silence is golden. ?>זהו. מעתה, כל קבוצת שדות שתיצרו או תערכו תישמר אוטומטית כקובץ JSON בתיקייה זו.
צרו תמיד את תיקיית acf-json בתבנית הבת, לא בתבנית האב. עדכוני תבנית אב ימחקו את התיקייה ואת כל קבצי ה-JSON. אם אינכם משתמשים בתבנית בת, השתמשו בפילטר acf/settings/save_json כדי לשמור קבצים למיקום מותאם.
סנכרון שדות בהתקנה אחרת
כדי להשתמש באותם שדות באתר וורדפרס אחר:
- העתיקו את תיקיית
acf-jsonלאותה תיקיית תבנית באתר החדש (או דחפו דרך Git) - בממשק הניהול, עברו אל Custom Fields > Field Groups
- אם ACF מזהה קבצי JSON שעדיין לא במסד הנתונים, תראו לשונית "Sync Available"
- סמנו את הקבוצות שברצונכם לסנכרן ולחצו "Sync"

ACF מסמן קבוצת שדות כ"זמינה לסנכרון" כאשר:
- הקבוצה קיימת ב-JSON אך לא במסד הנתונים
- לקובץ ה-JSON יש חותמת
modifiedחדשה יותר מגרסת מסד הנתונים
התאמה אישית של נתיבי שמירה וטעינה
כברירת מחדל, ACF משתמש בתיקיית acf-json בתבנית הפעילה. ניתן לדרוס את נתיב השמירה ונתיבי הטעינה באמצעות פילטרים:
add_filter( 'acf/settings/save_json', function( $path ) {
return get_stylesheet_directory() . '/acf-json';
} );
add_filter( 'acf/settings/load_json', function( $paths ) {
$paths[] = get_stylesheet_directory() . '/acf-json';
return $paths;
} );שימושי כאשר רוצים:
- לאחסן קבצי JSON בתוסף במקום בתבנית
- לטעון קבוצות שדות ממספר מיקומים (למשל, ספרייה משותפת)
- לשמור קבצי ACF JSON מחוץ לתבנית להפרדת אחריות טובה יותר
מאז ACF 6.2, ניתן להשתמש גם בפילטרים מפורטים יותר להתאמת נתיבים על בסיס מפתח או סוג קבוצת השדות. עיינו בתיעוד הרשמי של Local JSON לפרטים.
Local JSON מול רישום בעזרת PHP
ACF מציע שתי דרכים להגדרת שדות בקוד: Local JSON ורישום באמצעות PHP דרך acf_add_local_field_group(). הנה השוואה:
| תכונה | Local JSON | רישום PHP |
|---|---|---|
| ניתן לעריכה בממשק | כן (שינויים נשמרים חזרה ל-JSON) | לא (שדות לקריאה בלבד בממשק) |
| דורש כתיבת קוד | לא (נוצר אוטומטית) | כן (מערכי PHP) |
| ניהול גרסאות | קבצי JSON | קבצי PHP |
| ביצועים | מהיר יותר מ-DB, קצת איטי מ-PHP | מהיר ביותר (ללא קריאת קובץ/DB) |
| מתאים עבור | צוותים, פיתוח איטרטיבי | שדות נעולים בייצור |
רוב המפתחים משתמשים ב-Local JSON במהלך הפיתוח (לגמישות) ועוברים לרישום PHP בייצור אם רוצים למנוע עריכה בטעות של שדות.
שיטות עבודה מומלצות
- בצעו commit לקבצי JSON ב-Git: התייחסו אליהם כחלק מבסיס הקוד, לא כקבצים חד-פעמיים
- אל תערכו קבצי JSON ידנית: תמיד בצעו שינויים דרך ממשק הניהול של ACF ותנו ל-ACF ליצור מחדש את ה-JSON
- השתמשו בתבנית בת: אחסנו את תיקיית
acf-jsonבתבנית הבת כדי לשרוד עדכוני תבנית אב - הוסיפו את
acf-jsonל-deployment: ודאו שתהליך הפריסה כולל את התיקייה - בדקו diffs לפני merge: הבדלים ב-JSON יכולים לחשוף שינויי שדות לא מכוונים שבוצעו על ידי חברי צוות אחרים
שאלות נפוצות
שאלות נפוצות על ACF Local JSON:
acf-json בתבנית ולהתחיל להשתמש בו ללא רישיון PRO. הפיצ'ר עובד עם קבוצות שדות, סוגי תוכן, טקסונומיות ודפי אפשרויות.modified בקובץ ה-JSON מול גרסת מסד הנתונים. אם קובץ ה-JSON חדש יותר, ACF מסמן את הקבוצה כ"Sync Available" בממשק. יש ללחוץ ידנית על "Sync" כדי לעדכן את מסד הנתונים. ACF לעולם לא דורס את מסד הנתונים אוטומטית, כך שאין סיכון לאבד שינויים ללא ידיעתכם.acf_add_local_field_group() ב-PHP במקום.acf/settings/save_json ו-acf/settings/load_json כדי להצביע על תיקייה בתוך תיקיית התוסף. זה נפוץ כשבונים תוסף מותאם אישית שכולל קבוצות שדות ACF משלו. הוסיפו את הפילטרים בקובץ הראשי של התוסף כדי לדרוס את נתיב ברירת המחדל של התבנית.סיכום
ACF Local JSON הופך את קבוצות השדות לקבצים מנוהלי גרסאות על ידי שמירתם אוטומטית כ-JSON בתיקיית acf-json של התבנית. זה מבטל את הצורך בייצוא/ייבוא ידני והופך את פריסת השדות לפשוטה כמו דחיפת קוד.
הפיצ'ר זמין בגרסה החינמית של ACF מאז 6.0. כדי להתחיל, צרו תיקיית acf-json בתבנית הבת, ו-ACF מטפל בשאר. בסביבות אחרות, השתמשו בלשונית "Sync Available" כדי למשוך שינויי שדות מקבצי ה-JSON.
לאתרי ייצור שבהם רוצים לנעול שדות לחלוטין, שקלו רישום שדות באמצעות PHP במקום. לכל השאר, Local JSON מספק את האיזון הנכון בין גמישות לניהול גרסאות.

