חיפוש ]

מספר מילים על ACF Synchronized JSON

אם אתם עובדים על פרויקטי וורדפרס עם מספר סביבות – פיתוח מקומי, 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 כדי לשמור קבצים למיקום מותאם.

סנכרון שדות בהתקנה אחרת

כדי להשתמש באותם שדות באתר וורדפרס אחר:

  1. העתיקו את תיקיית acf-json לאותה תיקיית תבנית באתר החדש (או דחפו דרך Git)
  2. בממשק הניהול, עברו אל Custom Fields > Field Groups
  3. אם ACF מזהה קבצי JSON שעדיין לא במסד הנתונים, תראו לשונית "Sync Available"
  4. סמנו את הקבוצות שברצונכם לסנכרן ולחצו "Sync"

Sync Available - ACF JSON

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 PRO בשביל Local JSON?
לא. מאז ACF 6.0, Local JSON זמין בגרסה החינמית. ניתן ליצור את תיקיית acf-json בתבנית ולהתחיל להשתמש בו ללא רישיון PRO. הפיצ'ר עובד עם קבוצות שדות, סוגי תוכן, טקסונומיות ודפי אפשרויות.
מה קורה כשקובץ ה-JSON וגרסת מסד הנתונים מתנגשים?
ACF משווה את חותמת הזמן modified בקובץ ה-JSON מול גרסת מסד הנתונים. אם קובץ ה-JSON חדש יותר, ACF מסמן את הקבוצה כ"Sync Available" בממשק. יש ללחוץ ידנית על "Sync" כדי לעדכן את מסד הנתונים. ACF לעולם לא דורס את מסד הנתונים אוטומטית, כך שאין סיכון לאבד שינויים ללא ידיעתכם.
האם כדאי לערוך קבצי JSON ידנית?
לא. בצעו תמיד שינויים בשדות דרך ממשק הניהול של ACF ותנו ל-ACF ליצור מחדש את קבצי ה-JSON. מבנה ה-JSON כולל מפתחות פנימיים, hash-ים וסדר שקל לשבור בעריכה ידנית. אם צריכים להגדיר שדות אך ורק בקוד, השתמשו ב-acf_add_local_field_group() ב-PHP במקום.
האם Local JSON משפר ביצועים?
כן. כאשר Local JSON מופעל, ACF טוען הגדרות שדות מקבצי JSON במקום לשלוח שאילתות למסד הנתונים. קריאת קובץ מקומי מהירה יותר משאילתת מסד נתונים, במיוחד באתרים עם קבוצות שדות רבות. השיפור בביצועים קטן לכל קבוצה אך מצטבר באתרים מורכבים עם עשרות קבוצות שדות.
האם ניתן להשתמש ב-Local JSON עם תוסף במקום תבנית?
כן. השתמשו בפילטרים 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 מספק את האיזון הנכון בין גמישות לניהול גרסאות.

דיון ותגובות
0 תגובות  ]

השאירו תגובה

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

Savvy WordPress Development official logo