$widget ) { $newId = ++ $theHighestTextWidgetId; $oldToNewIdMap[ $id ] = $newId; $textWidgets = Obj::assoc( $newId, $transformWidget( $widget ), $textWidgets ); } Option::update( 'widget_text', $textWidgets ); Option::delete( 'widget_text_icl' ); $sidebars = wp_get_sidebars_widgets(); $sidebars = $this->convertSidebarsConfig( $sidebars, $oldToNewIdMap ); wp_set_sidebars_widgets( $sidebars ); $this->convertWidgetsContentStrings(); return true; } private function convertSidebarsConfig( $sidebars, array $oldToNewIdMap ) { $isMultilingualWidget = Str::startsWith( 'text_icl' ); $extractIdNumber = pipe( Str::split( '-' ), Lst::last(), Cast::toInt() ); $mapWidgetId = Logic::ifElse( $isMultilingualWidget, pipe( $extractIdNumber, Obj::prop( Fns::__, $oldToNewIdMap ), Str::concat( 'text-' ) ), Fns::identity() ); return Fns::map( Fns::map( $mapWidgetId ), $sidebars ); } private function convertWidgetsContentStrings() { global $wpdb; $wpdb->query(" UPDATE {$wpdb->prefix}icl_strings SET `name` = CONCAT( 'widget body - ', MD5(`value`)) WHERE `name` LIKE 'widget body - text_icl%' "); $locales = Fns::map( Languages::getWPLocale(), Languages::getSecondaries() ); Fns::map( partial( [ ManagerFactory::create(), 'add' ], 'Widgets' ), $locales ); } public function run_ajax() { } public function run_frontend() { } public static function get_command_id() { return __CLASS__; } }