959 | | function wp_get_sidebars_widgets($update = true) { |
960 | | global $wp_registered_widgets, $wp_registered_sidebars, $_wp_sidebars_widgets; |
961 | | |
962 | | // If loading from front page, consult $_wp_sidebars_widgets rather than options |
963 | | // to see if wp_convert_widget_settings() has made manipulations in memory. |
964 | | if ( is_admin() ) { |
965 | | $sidebars_widgets = get_option('sidebars_widgets', array()); |
966 | | } else { |
967 | | if ( empty($_wp_sidebars_widgets) ) |
968 | | $sidebars_widgets = get_option('sidebars_widgets', array()); |
969 | | else |
970 | | $sidebars_widgets = &$_wp_sidebars_widgets; |
971 | | } |
972 | | $_sidebars_widgets = array(); |
973 | | |
974 | | if ( !isset($sidebars_widgets['array_version']) ) |
975 | | $sidebars_widgets['array_version'] = 1; |
976 | | |
977 | | switch ( $sidebars_widgets['array_version'] ) { |
978 | | case 1 : |
979 | | foreach ( (array) $sidebars_widgets as $index => $sidebar ) |
980 | | if ( is_array($sidebar) ) |
981 | | foreach ( (array) $sidebar as $i => $name ) { |
982 | | $id = strtolower($name); |
983 | | if ( isset($wp_registered_widgets[$id]) ) { |
984 | | $_sidebars_widgets[$index][$i] = $id; |
985 | | continue; |
986 | | } |
987 | | $id = sanitize_title($name); |
988 | | if ( isset($wp_registered_widgets[$id]) ) { |
989 | | $_sidebars_widgets[$index][$i] = $id; |
990 | | continue; |
991 | | } |
992 | | |
993 | | $found = false; |
994 | | |
995 | | foreach ( $wp_registered_widgets as $widget_id => $widget ) { |
996 | | if ( strtolower($widget['name']) == strtolower($name) ) { |
997 | | $_sidebars_widgets[$index][$i] = $widget['id']; |
998 | | $found = true; |
999 | | break; |
1000 | | } elseif ( sanitize_title($widget['name']) == sanitize_title($name) ) { |
1001 | | $_sidebars_widgets[$index][$i] = $widget['id']; |
1002 | | $found = true; |
1003 | | break; |
1004 | | } |
1005 | | } |
1006 | | |
1007 | | if ( $found ) |
1008 | | continue; |
1009 | | |
1010 | | unset($_sidebars_widgets[$index][$i]); |
1011 | | } |
1012 | | $_sidebars_widgets['array_version'] = 2; |
1013 | | $sidebars_widgets = $_sidebars_widgets; |
1014 | | unset($_sidebars_widgets); |
1015 | | |
1016 | | case 2 : |
1017 | | $sidebars = array_keys( $wp_registered_sidebars ); |
1018 | | if ( !empty( $sidebars ) ) { |
1019 | | // Move the known-good ones first |
1020 | | foreach ( (array) $sidebars as $id ) { |
1021 | | if ( array_key_exists( $id, $sidebars_widgets ) ) { |
1022 | | $_sidebars_widgets[$id] = $sidebars_widgets[$id]; |
1023 | | unset($sidebars_widgets[$id], $sidebars[$id]); |
1024 | | } |
1025 | | } |
1026 | | |
1027 | | // Assign to each unmatched registered sidebar the first available orphan |
1028 | | unset( $sidebars_widgets[ 'array_version' ] ); |
1029 | | while ( ( $sidebar = array_shift( $sidebars ) ) && $widgets = array_shift( $sidebars_widgets ) ) |
1030 | | $_sidebars_widgets[ $sidebar ] = $widgets; |
1031 | | |
1032 | | $_sidebars_widgets['array_version'] = 3; |
1033 | | $sidebars_widgets = $_sidebars_widgets; |
1034 | | unset($_sidebars_widgets); |
1035 | | } |
1036 | | |
1037 | | if ( $update && is_admin() ) |
1038 | | update_option('sidebars_widgets', $sidebars_widgets); |
1039 | | } |
1040 | | |
1041 | | if ( isset($sidebars_widgets['array_version']) ) |
1042 | | unset($sidebars_widgets['array_version']); |
1043 | | |
1044 | | $sidebars_widgets = apply_filters('sidebars_widgets', $sidebars_widgets); |
1045 | | return $sidebars_widgets; |
| 958 | function wp_get_sidebars_widgets($deprecated = true) { |
| 959 | $sidebars_widgets = get_option('sidebars_widgets', array()); |
| 960 | $sidebars_widgets['array_version']; // deprecated |
| 961 | return apply_filters('sidebars_widgets', $sidebars_widgets); |