עקבו אחר המדריך שלנו צעד אחר צעד כדי להפוך את התוספים וערכות העיצוב שלך לתואמים ל־WPML.
מדריך זה מיועד למפתחי ערכות עיצוב ותוספים שכבר הצטרפו לתוכנית התאימות שלנו – Go Global. אם טרם הצטרפת, הגש את הבקשה שלך לפני שתעקבו אחר מדריך זה.
כיצד להפוך לתואם ל־WPML
1. יצירת קובץ הגדרות שפה
קובץ הגדרות שפה אומר ל־WPML אילו טקסטים לתרגם (ואילו לא) בתוסף או בערכת העיצוב שלך. זה כולל טקסטים בסוגי תוכן מותאמים אישית, טקסונומיות, שדות, מסכי אזור הניהול, וידג'טים ועוד.
אם אתה כבר יודע כיצד ליצור קובץ הגדרות שפה, עקבו אחר ההוראות להלן כדי לבדוק את ההגדרה שלך. אחרת, עיין במדריך הגדרות השפה שלנו כדי ללמוד כיצד ליצור אחד.
בדיקת ההגדרה
1. צור כמה פוסטים וטקסונומיות
2. שלח אותם לתרגום
3. ודא שהם מופיעים מתורגמים בצד הלקוח
2. הכנת מחרוזות לתרגום
מחרוזות הן כל הטקסטים שמופיעים באתר ואינם חלק מפוסטים, עמודים או טקסונומיות. כדי לאפשר ל־WPML לתרגם מחרוזות בתוסף או בערכת העיצוב שלך, עקבו אחר ההוראות להלן עבור כל מקרה שימוש.
בזמן שאתה מגדיר את המחרוזות שלך, השתמש בתוסף Multilingual Tools כדי לוודא אילו מחרוזות ניתנות לתרגום ואילו דורשות הגדרה נוספת.
מחרוזות Hard-Coded
מחרוזות Hard-Coded צריכות להירשם באמצעות פונקציות gettext. למידע נוסף על שימוש ב־gettext והכנת הקוד שלך.
מחרוזות ב־wp_options
אם התוסף או ערכת העיצוב שלך משתמשים במחרוזות מטבלת wp_options , רשום אותן בקובץ wpml-config.xml.
אם מפתחות האפשרויות שלך אינם קבועים, וערכת העיצוב שלך משתמשת במערך של רשומות שעשוי לגדול עם קלט משתמש, רשום את הרשומות הללו באופן דינמי. תוכל להשתמש בפונקציות ה־API של WPML כדי לעשות זאת.
מחרוזות דינמיות
אם אף אחת מהשיטות הקודמות אינה רלוונטית למחרוזות שלך, עקבו אחר המדריכים הבאים כדי להכין מחרוזות לתרגום:
- הפיכת טקסטים של קלט משתמש לניתנים לתרגום
- הפיכת תוכן בטבלאות מסד נתונים מותאמות אישית לניתן לתרגום
- קיבוץ טקסטים לחבילות מחרוזות לתרגום מהיר יותר
בדיקת ההגדרה
1. סרוק את התוסף / ערכת העיצוב שלך לאיתור מחרוזות תחת WPML → לוקליזציה של ערכות עיצוב ותוספים
2. צור עמוד עם מחרוזות
3. בדוק אם המחרוזות מופיעות תחת תרגום מחרוזות
4. תרגם מספר מחרוזות וודא שהן מופיעות מתורגמות בצד הלקוח
3. רישום וידג'טים ובלוקים מותאמים אישית לתרגום
אם ערכת העיצוב או התוסף שלך כוללים וידג'טים מותאמים אישית עבור תוספי בניית עמודים, כמו Elementor, עליך לרשום אותם לתרגום.
עיין במדריכים הבאים כדי ללמוד עוד על רישום תוכן של תוספי בניית עמודים:
בדיקת ההגדרה
1. צור עמוד עם כל הווידג'טים המותאמים אישית שלך
2. שלח את העמוד לתרגום וודא שטקסטים של וידג'טים מופיעים תחת עורך תרגום מתקדם
3. בדוק שהתרגומים מוצגים בצד הלקוח
4. חזור על השלבים כדי לבדוק הגדרות וידג'ט שונות
4. שליפה אוטומטית של מזהים (IDs) משפות שונות
אם בערכת העיצוב או בתוסף שלך יש תכונות או אפשרויות שטוענות מזהי פוסטים שונים בכל שפה, השתמשו בפילטר wpml_object_id כדי לשלוף אוטומטית את מזהה הפוסט המתורגם.
לדוגמה, קחו בחשבון סליידר עם שקופיות בשפות שונות, שלכל אחת מהן מזהה ייחודי. כדי לטעון אוטומטית את מזהה השקופית הנכון בכל שפה, נוכל להשתמש בפילטר wpml_object_id :
// Loop posts while (have_posts()): the_post(); $post = get_post( apply_filters( 'wpml_object_id', $post->ID, 'slide' ) );
בדיקת ההגדרה
1. צור את הפוסט / התבנית הרלוונטיים וכדומה, והוסף מחרוזת טקסט
2. הגדר את התכונה שלך להשתמש בפוסט זה
3. תרגם את הפוסט והגדר ערך שונה במחרוזת הטקסט
4. בדוק שהתכונה טוענת את המזהה המתורגם בצד הלקוח
5. הפיכה לתואם ל־WooCommerce
WPML יכול לתרגם תוכן של WooCommerce בעזרת התוסף הנלווה שלו WPML Multilingual & Multicurrency for WooCommerce. אם ערכת העיצוב או התוסף שלך מכילים רכיבי WooCommerce, עקבו אחר מדריך התאימות של WPML Multilingual & Multicurrency for WooCommerce שלנו כדי להפוך אותו לתואם ל־WPML.
6. הצגה או הסתרה של בורר השפות באזור הניהול
כברירת מחדל, WPML מוסיף בורר שפות לסרגל אזור הניהול של WordPress. בורר זה גלוי למשתמשים מחוברים, הן בצד הלקוח והן באזור הניהול.

במקרים מסוימים, ייתכן שתרצה להסתיר את בורר השפות בעמודים רגישים, כמו אזור ההגדרות שלך. כדי לעשות זאת, הוסף את הקוד הבא לקובץ functions.php שלך:
//Make sure to rename the function before adding to your plugin
add_filter( 'wpml_show_admin_language_switcher', 'compsupp_disable_wpml_admin_lang_switcher' );
function compsupp_disable_wpml_admin_lang_switcher( $state ) {
global $pagenow;
// Add the admin pages that we need to hide the language switcher
$admin_pages_to_hide_ls = array(
'admin-page-slug', 'another-admin-page-slug', 'one-more-admin-page-slug'
);
// We can also have a filter here in case we need to add/remove pages later
$admin_pages_to_hide_ls = apply_filters( 'compsupp_filter_disable_wpml_lang_switcher_in_admin', $admin_pages_to_hide_ls);
if (
$pagenow == 'admin.php'
&& isset( $_GET['page'] )
&& in_array( $_GET['page'], $admin_pages_to_hide_ls)
) {
$state = false;
}
return $state;
}
הפיכת תכונות מיוחדות לתואמות
אם ערכת העיצוב או התוסף שלך כוללים תכונות מיוחדות (כמו שימוש בטבלאות מותאמות אישית) תצטרך להשתמש בקוד מותאם אישית כדי להפוך אותם לתואמים ל־WPML.
עיין במשאבים למפתחים שלנו למידע על פיתוח מותאם אישית.
בעיות נפוצות ופתרונות
פתרון:
$label = esc_html( apply_filters('wpml_translate_single_string', $this->checkout_item->name, 'wpsc', '$this->checkout_item->name .'_checkout_form_label'' ) );
wp_query($args) או get_posts($args) אינם מסננים את מזהי הפוסטים הנכונים עבור השפה הנוכחית +
פתרון:
אם אתה משתמש ב־wp_query($args) או ב־get_posts($args) עליך להוסיף "suppress_filters=0" לארגומנטים.
כל השקופיות מוצגות בשפה אחת +
פתרון:
// Unset not translated slides
foreach( $slides as $k => $slide ) {
$check = apply_filters( 'wpml_post_language_details', NULL, $slide->ID )
$slide_language_code = substr( $check['locale'], 0, 2 );
if( $check['different_language'] ) {
unset( $slides[$k] );
}
}
מזהה שקופית (Slide ID) שונה בשפה שנייה +
פתרון:
// Loop posts while (have_posts()): the_post(); $post = get_post( apply_filters( 'wpml_object_id', $post->ID, 'slide' ) );
הסליידר משתמש בעמוד אזור ניהול מותאם אישית ואני צריך לרשום ערכי שדות מותאמים אישית לתרגומים +
פתרון:
// Adding a new slide code $slide_id = $this->slide->ID; $url = $fields['url']; // Register slide URL to translations do_action( 'wpml_register_single_string', 'Slider', 'Slide_ID_' . $this->slide->ID, $url); $this->add_or_update_or_delete_meta($this->slide->ID, 'url', $url);
מזהה טקסונומיה מותאמת אישית שונה בשפה שנייה +
פתרון:
$taxonomy_id = apply_filters( 'wpml_object_id', $taxonomy_id, 'my_custom_taxonomy' );
בקשות AJAX מותאמות אישית (שאינן סטנדרטיות של WordPress) מחזירות תמיד את תוכן שפת ברירת המחדל +
פתרון:
בעת בניית כתובות URL מותאמות אישית של AJAX, השתמש בהוק wpml_current_language והוסף את השפה הנוכחית כפרמטר עבור כתובות ה־URL של AJAX.
$ajax_url = 'http://my-site.com/wp-content/plugins/my-plugin/handle-ajax.php';
$my_current_lang = apply_filters( 'wpml_current_language', NULL );
if ( $my_current_lang ) {
$ajax_url = add_query_arg( 'wpml_lang', $my_current_lang, $ajax_url );
// $ajax_url will be something like 'http://my-site.com/wp-content/plugins/my-plugin/handle-ajax.php?wpml_lang=es'
}
בעת טיפול בבקשות AJAX בקובץ handle-ajax.php, לפני יצירת פלט התוכן, השתמש בהוק wpml_switch_language כדי להחליף את שפת התוכן.
if ( isset( $_GET[ 'wpml_lang' ] ) ) {
do_action( 'wpml_switch_language', $_GET[ 'wpml_lang' ] ); // switch the content language
}
// Run other content queries.
שימוש שגוי בערך "id" בארגומנט(ים) של WP_Query $args[ 'tax_query' ][ 'field' ] +
פתרון:
השימוש בארגומנט "id" עבור הפרמטר "field" עובד עבור שפת ברירת המחדל אך אינו עובד עבור השפה השנייה. להלן דוגמה לשאילתה שגויה:
$args = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'people',
'field' => 'id',
'terms' => 'bob',
),
),
);
$query = new WP_Query( $args );
על המפתחים לתקן את הפרמטר "field".
'field' => 'id',
לצורה הבאה:
'field' => 'term_id',
מקור: https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters. אין ערך "id" עבור הפרמטר "field". ערך ברירת המחדל שלו הוא "term_id".