- סטטוס
- נפתר על ידי המפתח
- נפתר בגרסה
- BetterDocs 4.2.3
- תוסף/ערכת עיצוב קשורים
- BetterDocs
- תגיות נושא
- Compatibility
סקירה כללית של התקלה
בעת שימוש ב־BetterDocs עם WPML, ייתכן שתיתקל בבעיה הבאה: סידור מחדש של מסמכים באמצעות ממשק הגרירה והשחרור של BetterDocs גורם לשיוכי הקטגוריות להיות לא מסונכרנים בשפות משניות. כתוצאה מכך, מסמכים עשויים להיות משויכים באופן שגוי לקטגוריות משפות אחרות, והסדר החדש עשוי שלא להשתקף בתרגומים.
פתרון עוקף
אנא ודא שיש לך גיבוי מלא של האתר לפני שתמשיך.
- פתח את הקובץ …wp-content/plugins/betterdocs/includes/Core/PostType.php.
- חפש את שורה 599.
- החלף את:
if ( update_term_meta( $term_id, '_docs_order', $docs_ordering_data ) ) { wp_send_json_success( __( 'Successfully updated.', 'betterdocs' ) ); } - בקטע הבא:
if ( update_term_meta( $term_id, '_docs_order', $docs_ordering_data ) ) { // WPML Integration: Sync taxonomies after order change if ( class_exists( 'SitePress' ) && class_exists( 'WPML_Term_Translation_Utils' ) ) { $docs_array = isset( $_POST['docs_ordering_data'] ) && is_array( $_POST['docs_ordering_data'] ) ? array_map( 'intval', $_POST['docs_ordering_data'] ) : explode( ',', $docs_ordering_data ); $this->wpml_sync_posts_taxonomies( $docs_array ); } wp_send_json_success( __( 'Successfully updated.', 'betterdocs' ) ); } - בסוף אותו קובץ, לפני ה־
}האחרון (בסביבות שורה 1130). - הוסף את פונקציית העזר הזו:
/** * WPML Integration: Sync post taxonomies across translations * @param array $post_ids Array of post IDs to sync */ private function wpml_sync_posts_taxonomies( $post_ids ) { global $sitepress; if ( ! $sitepress || empty( $post_ids ) ) return; $sync = new WPML_Term_Translation_Utils( $sitepress ); foreach ( $post_ids as $post_id ) { $trid = $sitepress->get_element_trid( $post_id, 'post_docs' ); if ( ! $trid ) continue; $translations = $sitepress->get_element_translations( $trid, 'post_docs' ); $original_id = $post_id; foreach ( $translations as $translation ) { if ( isset( $translation->original ) && $translation->original == 1 ) { $original_id = $translation->element_id; break; } } foreach ( $sitepress->get_active_languages() as $lang => $details ) { $sync->sync_terms( $original_id, $lang ); } } }