- סטטוס
- נפתר על ידי המפתח
- נפתר בגרסה
- Impreza 8.18.5
- תוסף/ערכת עיצוב קשורים
- Impreza
- תגיות נושא
- Compatibility
סקירה כללית של התקלה
עם ערכת העיצוב Impreza, בעת שימוש בווידג’טים מסוימים כמו Action box, Icon box, טקסט וכדומה, והגדרת כתובות URL עבורם, כתובות URL אלו מופיעות כמקודדות בעורך התרגום המתקדם (Advanced Translation Editor) של WPML, מה שהופך את התרגום שלהן למורכב.
ייתכן שתראה גם שגיאה דומה:
htmlspecialchars_decode(): Argument #1 ($string) must be of type string, array given .../wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Shared/st/strategy/shortcode/class-wpml-pb-update-shortcodes-in-content.php:203
פתרון עוקף
ודא שיש לך גיבוי מלא של האתר לפני שתמשיך.
- פתח את הקובץ …/wp-content/plugins/us-core/plugins-support/wpml.php.
- חפש את שורה 42.
- החלף את הקוד הקשור ל־wpml_pb_shortcode_encode_us_link ול־wpml_pb_shortcode_decode_us_link בקוד הבא:
if ( ! function_exists( 'wpml_pb_shortcode_encode_us_link' ) ) { /** * Add support for "link" control * * @param string $string * @param string $encoding * @param string $original_string * @return string */ function wpml_pb_shortcode_encode_us_link( $string, $encoding, $original_string ) { if ( 'us_link' === $encoding ) { $output = array(); //In translation we can save the new encoding method only i.e. JSON. foreach ( $string as $combined_key => $value ) { $parts = explode( '_', $combined_key ); $i = array_pop( $parts ); $key = implode( '_', $parts ); $cleaned_keys[ $i ][ $key ] = $value; } foreach ( $cleaned_keys as $subkey ) { foreach ( $subkey as $key => $value ) { $output[$key] = $value; } } $string = urlencode(json_encode($output)); } return $string; } add_filter( 'wpml_pb_shortcode_encode', 'wpml_pb_shortcode_encode_us_link', 10, 3 ); } if ( ! function_exists( 'wpml_pb_shortcode_decode_us_link' ) ) { /** * Add support for "link" control * * @param string $string * @param string $encoding * @param string $original_string * @return array */ function wpml_pb_shortcode_decode_us_link( $string, $encoding, $original_string ) { if ( 'us_link' === $encoding ) { $original_string = urldecode( $original_string ); $is_json = true; $strings = json_decode($original_string); $string = []; // There are two types of encoding, the new method uses JSON and old method uses custom encoding. if ($strings === NULL) { $is_json = false; $strings = explode("|", $original_string); } foreach ( $strings as $i => $value ) { if ($is_json) { $rows[][$i] = $value; } else { $item = explode(":", $value); $key = $item[0]; unset($item[0]); $value = implode(":", $item); $row[$key] = $value; $rows[] = $row; unset($row[$key]); } } foreach ( $rows as $i => $row ) { foreach ( $row as $key => $value ) { if ( $key == 'url' ) { $string[ $key . '_' . $i ] = array( 'value' => $value, 'translate' => true ); } else { $string[ $key . '_' . $i ] = array( 'value' => $value, 'translate' => false ); } } } } return $string; } add_filter( 'wpml_pb_shortcode_decode', 'wpml_pb_shortcode_decode_us_link', 10, 3 ); } - הוסף שינוי קטן בעמוד המקורי, ולאחר מכן תרגם אותו