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

לאחרונה נדרשתי להוסיף אפשרות עריכה ב ACF לעמוד ארכיון כלשהו (Archive Page), באתר מסויים העובד עם פולילנג. מכיוון ולא ניתן בעזרת ACF להוסיף אפשרויות עריכה לעמוד ארכיון (וזאת כי לא קיים בפועל עמוד כזה שניתן לערוך), היה עליי להוסיף את אפשרות העריכה על ידי הוספת עמוד אפשרויות (Options Page) ב ACF.

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

הוספת 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 את השפות המוגדרות בפולילנג ואת זאת עושים על ידי הוספת קוד השפה (Language Code) של כל אחת מהשפות הקיימות. את אותו Code ניתן למצוא בהגדרות השפה של פולילנג תחת Languages > Languages בממשק הניהול של וורדפרס.

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

במקרה של האתר שאני התעסקתי איתו מדובר על השפות en & cn (סינית ואנגלית) ואלו מופיעות בשורה 11 בקוד שצירפתי מעלה. לאחר הוספת הקוד יופיעו האפשרויות הבאות בממשק הניהול של וורדפרס:

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

בשלב זה עליכם להוסיף את השדות הרצויים לאותם עמודים, וזאת כשאתם בוחרים עמודים אלו תחת Location כשאתם יוצרים קבוצת שדות חדשה.

מיקום השדות בעמוד האפשרויותבזאת סיימתם חלק זה, לאחר הוספת השדות באתר בו אני מטפל אותם עמודי אפשרויות נראים באופן הבא:

שדות מלאים - אפשרויות ACFכעת נשאר רק להבין כיצד ניתן למשוך שדות אלו בתבנית שלנו בהתאם לשפה של אותו עמוד בו אנו נמצאים…

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

חלק זה כבר פשוט יותר. בכדי לקבל את המידע ב PHP של אותם שדות שיצרנו ובהתאם לשפה של העמוד בו אנו צופים, עלינו להשתמש בפונקציה pll_current_language כפרמטר שני בקריאה לאותו שדה, בין אם זה על ידי הפונקציה get_field שאתם אמורים להכיר או כל פונקציה אחרת של 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(); ?>

עד כאן.

רועי יוסף
רועי יוסף

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

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

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

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

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

השאירו תגובה

 

Up!
לבלוג