חיפוש ]

כיצד להוסיף ACF Options Pages לאתרי פולילנג

אם אתם צריכים לנהל תוכן שניתן לתרגום בעמודים ש-ACF לא יכול לטרגט ישירות (כמו עמודי ארכיון), עמודי אפשרויות של ACF הם הפתרון. באתר רב-לשוני עם פולילנג, צריך שכל עמוד אפשרויות ישמור ערכים נפרדים לכל שפה.

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

מדריך זה מראה כיצד ליצור עמודי אפשרויות לכל שפה ולמשוך את ערכי השדות הנכונים בהתאם לשפה הנוכחית.

חלופה באמצעות תוסף: התוסף ACF Options For Polylang (מעל 10,000 התקנות) מטפל בכך אוטומטית על ידי שמירת ערכים ספציפיים לשפה במסד הנתונים. הגישה הידנית שלהלן מעניקה שליטה מלאה ללא תוסף נוסף.

הוספת ACF Options Page לאתר Polylang

בכדי להוסיף את אותו עמוד האפשרויות לכל אחת מהשפות המוגדרות בפולילנג הוסיפו את הקוד הבא לקובץ functions.php:

if (function_exists('acf_add_options_page')) {
    // Main Theme Settings Page
    acf_add_options_page();

    $parent = acf_add_options_page(array(
        'page_title' => 'Archive General Settings',
        'menu_title' => 'Archive Settings',
        'redirect' => 'Archive Settings',
    ));
    
    $languages = array('cn', 'en');
    
    // 
    // Language Specific Options
    // Translatable options specific languages. e.g., social profiles links
    // 
    
    foreach ($languages as $lang) {
        acf_add_options_sub_page(array(
            'page_title' => 'Options (' . strtoupper($lang) . ')',
            'menu_title' => __('Options (' . strtoupper($lang) . ')', 'text-domain'),
            'menu_slug' => "options-${lang}",
            'post_id' => $lang,
            'parent' => $parent['menu_slug']
        ));
    }
}

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

טיפ: במקום לכתוב שפות בקוד, ניתן לזהות אותן דינמית באמצעות pll_languages_list(). החליפו את שורה 11 ב: $languages = pll_languages_list(); כך, הוספת שפה חדשה בפולילנג תיצור אוטומטית את עמוד האפשרויות שלה.

הגדרות השפה של פולילנג - Code

לאחר הוספת הקוד, יופיעו אפשרויות ספציפיות לשפה בממשק הניהול של וורדפרס:

הגדרות ארכיון Polylang

כעת, צרו קבוצת שדות חדשה והגדירו את ה-Location לעמוד האפשרויות:

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

שדות מלאים - אפשרויות ACF

משיכת השדות של עמוד האפשרויות לפי השפה הרלוונטית

כדי למשוך את ערכי השדות הנכונים לשפה הנוכחית, העבירו את pll_current_language('slug') כפרמטר שני לכל פונקציה של ACF:

<?php $image = get_field('image', pll_current_language('slug')); ?>

או למשל בקריאה ל Repeater Field (שדה חזרה):

<?php if (have_rows('my_repeater_field', pll_current_language('slug'))) : ?>
                <?php while (have_rows('my_repeater_field', pll_current_language('slug'))) : the_row(); ?>

ודאו שאתם עוטפים קריאות ל-pll_current_language() בבדיקת function_exists() אם הקוד עשוי לרוץ באתר ללא פולילנג מותקן.

שאלות נפוצות

האם ניתן להשתמש בעמודי אפשרויות של ACF עם פולילנג ללא תוסף?
כן. על ידי יצירת תת-עמודים נפרדים לכל שפה באמצעות acf_add_options_sub_page() עם קוד השפה כ-post_id, ניתן לשמור ולמשוך ערכים ספציפיים לשפה ללא תוסף נוסף. השתמשו ב-pll_current_language('slug') כפרמטר שני ב-get_field() כדי למשוך את הערכים הנכונים.
כיצד להימנע מכתיבת קודי שפה בקוד?
החליפו את מערך השפות הכתוב בקוד ב-pll_languages_list(), שמחזירה דינמית את כל קודי השפות הפעילות מפולילנג. כך, כשמוסיפים או מסירים שפה בפולילנג, עמודי האפשרויות מתעדכנים אוטומטית ללא שינויי קוד.
מהו התוסף ACF Options For Polylang?
ACF Options For Polylang הוא תוסף וורדפרס חינמי עם מעל 10,000 התקנות פעילות שמטפל אוטומטית בעמודי אפשרויות ACF רב-לשוניים. הוא שומר ערכים ספציפיים לשפה במסד הנתונים ומשתלב עם מחליף השפות של פולילנג בממשק הניהול. הוא חוזר לערך "כל השפות" אם לא הוגדר ערך ספציפי לשפה.
האם הגישה הזו עובדת עם שדות Repeater ו-Flexible Content?
כן. העבירו את pll_current_language('slug') כפרמטר שני ל-have_rows() עבור שדות Repeater ו-Flexible Content. עמוד האפשרויות של כל שפה שומר סט שורות משלו, כך שהתוכן עצמאי לחלוטין לכל שפה.
למה לא ניתן להוסיף שדות ACF ישירות לעמודי ארכיון?
עמודי ארכיון בוורדפרס נוצרים דינמית ואין להם רשומת פוסט או עמוד תואמת במסד הנתונים. מכיוון ששדות ACF צריכים post ID לשמירת נתונים, יש להשתמש בעמוד אפשרויות כפתרון עוקף. עמוד האפשרויות מספק מקום ייעודי לשמירה וניהול שדות שחלים על תבניות ארכיון.

סיכום

התאמת עמודי אפשרויות של ACF לעבודה עם פולילנג דורשת יצירת תת-עמודים נפרדים לכל שפה ושימוש בקוד השפה כ-post_id. בעת משיכת שדות בתבניות, העבירו את pll_current_language('slug') כפרמטר שני לכל פונקציה של ACF.

לגישה אוטומטית יותר, שקלו שימוש ב-pll_languages_list() לזיהוי דינמי של שפות, או בתוסף ACF Options For Polylang לפתרון ללא קוד.

דיון ותגובות
2 תגובות  ]
  • עופר ליבני 5 נובמבר 2021, 21:30

    מציע להחליף את רשימת השפות שהיא הרד-קוד אצלך בשורה 11 עם קוד דינמי שכולל את הפונקציה pll_languages_list

    • רועי יוסף 5 נובמבר 2021, 22:03

      רעיון מצויין, בא לך לרשום את הקוד המתוקן כתגובה?

השאירו תגובה

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

Savvy WordPress Development official logo