- סטטוס
- נפתר
- דווח עבור
- WPML Multilingual CMS 4.6.8
- נפתר בגרסה
- WPML 4.6.9
- תגיות נושא
- Bug
סקירה כללית של התקלה
משתמשים ש־WordPress מותקן אצלם בתיקיית משנה ומשתמשים בתכונה השתמש בספרייה עבור שפת ברירת מחדל של WPML נתקלים ביצירת URL שגויה עבור ארכיוני טקסונומיות וקישורים של סוגי תוכן מותאמים אישית. הדבר גורם לנתיבים כפולים ב־URL ולשגיאות 404 כתוצאה מכך בעת ניסיון לגשת לעמודים אלה.
לדוגמה, תופנה אל http://www.domain.com/subfolder/en/subfolder/en/category/new-category/ במקום ל־http://www.domain.com/subfolder/en/category/new-category/.
פתרון עוקף
אנא ודא שיש לך גיבוי מלא של האתר לפני שתמשיך.
- פתח את הקובץ …/wp-content/plugins/sitepress-multilingual-cms/classes/canonicals/class-wpml-canonicals-hooks.php.
- חפש את שורה 87.
- שנה את:
public function redirectArchivePageToDefaultLangDir() { global $wp_query; $isValidForRedirect = $wp_query->is_archive() && ! call_user_func( $this->is_current_request_root_callback ); if ( ! $isValidForRedirect ) { return; } $currentUri = $_SERVER['REQUEST_URI']; $lang = $this->sitepress->get_current_language(); if ( 0 !== strpos( $currentUri, '/' . $lang ) ) { $canonicalUri = user_trailingslashit( $this->url_converter->get_abs_home() . '/' . $lang . $currentUri ); $this->redirectTo( $canonicalUri ); } } private function redirectTo( $uri ) { $this->sitepress->get_wp_api()->wp_safe_redirect( $uri, 301 ); } - ל:
public function redirectArchivePageToDefaultLangDir() { global $wp_query; $isValidForRedirect = $wp_query->is_archive() && ! call_user_func( $this->is_current_request_root_callback ); if ( ! $isValidForRedirect ) { return; } $currentUri = $_SERVER['REQUEST_URI']; $lang = $this->sitepress->get_current_language(); if ( 0 !== strpos( $currentUri, '/' . $lang ) ) { $realhome = get_option('siteurl'); $parsed = parse_url($realhome); if (false !== strpos($currentUri, $parsed["path"])){ return; } else { $canonicalUri = user_trailingslashit( $this->url_converter->get_abs_home() . '/' . $lang . $currentUri ); } $this->redirectTo( $canonicalUri ); } }