WPML

עקבו אחר המדריך שלנו צעד אחר צעד כדי להפוך את התוספים וערכות העיצוב שלך לתואמים ל־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) עליך להוסיף "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] );
	}
}

פתרון:

// 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' );

פתרון:

בעת בניית כתובות 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" עבור הפרמטר "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".

נכתב על ידי Amir · עודכן לאחרונה: 6 במאי 2026