name == 'Text' ) { // Convert if necessary if ( $widget->updated && isset( $_POST['icl_convert'] ) ) { if ( icl_widget_text_convert_to_multilingual( $widget, $instance ) === true ) { _e( 'This widget is converted to multilingual', 'wpml-string-translation' ); } return ''; } // Display form if ( ! icl_widget_text_is_converted( $widget ) ) { icl_widget_text_language_selectbox(); echo ''; } else { _e( 'This widget is converted to multilingual', 'wpml-string-translation' ); } } } function icl_widget_text_language_selectbox( $language = 'multilingual', $field_name = 'icl_language' ) { global $sitepress; $languages = $sitepress->get_active_languages(); echo ''; } function icl_widget_text_is_converted( $widget ) { $widgets = get_option( 'widget_text_icl', array() ); foreach ( $widgets as $icl_widget ) { if ( isset( $icl_widget['icl_converted_from'] ) && $icl_widget['icl_converted_from'] == $widget->id ) { return true; } } return false; } function icl_widget_text_convert_to_multilingual( $text_widget, $instance ) { global $wp_widget_factory; $icl_widget = $wp_widget_factory->widgets['WP_Widget_Text_Icl']; $number = $icl_widget->number + 1; $icl_widget->_set( $number ); $icl_widget->_register_one( $number ); // Get in which sidebar $sidebars = wp_get_sidebars_widgets(); if ( ! isset( $_POST['sidebar'] ) || ! isset( $sidebars[ $_POST['sidebar'] ] ) ) { _e( 'Converting to multilingual widget failed. No sidebar specified.', 'wpml-string-translation' ); return false; } // Add new instance $icl_widgets_text = get_option( 'widget_text_icl', array() ); if ( isset( $icl_widgets_text[ $icl_widget->number ] ) ) { _e( 'Widget is already converted', 'wpml-string-translation' ); return false; } unset( $icl_widgets_text['_multiwidget'] ); $_POST['icl_language'] = isset( $_POST['icl_language'] ) ? $_POST['icl_language'] : 'multilingual'; $icl_widgets_text[ $icl_widget->number ] = array( 'icl_language' => $_POST['icl_language'], 'icl_converted_from' => $text_widget->id, 'title' => $instance['title'], 'text' => $instance['text'], 'filter' => false, ); $icl_widgets_text['_multiwidget'] = 1; update_option( 'widget_text_icl', $icl_widgets_text ); // unset original instance foreach ( $sidebars[ $_POST['sidebar'] ] as $key => $widget ) { if ( $text_widget->id === $widget ) { unset( $sidebars[ $_POST['sidebar'] ][ $key ] ); $sidebars[ $_POST['sidebar'] ] = array_values( $sidebars[ $_POST['sidebar'] ] ); break; } } // Set in sidebar $sidebars[ $_POST['sidebar'] ][] = $icl_widget->id; wp_set_sidebars_widgets( $sidebars ); // Register strings if ( $_POST['icl_language'] == 'multilingual' ) { icl_register_string( WP_Widget_Text_Icl::STRING_DOMAIN, 'widget title', $instance['title'] ); icl_register_string( WP_Widget_Text_Icl::STRING_DOMAIN, 'widget body - ' . $icl_widget->id, $instance['text'] ); } // Refresh echo ' '; return true; }