Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../public_h.../wp-inclu...
File: widgets.php
// Internal Functions.
[1000] Fix | Delete
//
[1001] Fix | Delete
[1002] Fix | Delete
/**
[1003] Fix | Delete
* Retrieve full list of sidebars and their widget instance IDs.
[1004] Fix | Delete
*
[1005] Fix | Delete
* Will upgrade sidebar widget list, if needed. Will also save updated list, if
[1006] Fix | Delete
* needed.
[1007] Fix | Delete
*
[1008] Fix | Delete
* @since 2.2.0
[1009] Fix | Delete
* @access private
[1010] Fix | Delete
*
[1011] Fix | Delete
* @global array $_wp_sidebars_widgets
[1012] Fix | Delete
* @global array $sidebars_widgets
[1013] Fix | Delete
*
[1014] Fix | Delete
* @param bool $deprecated Not used (argument deprecated).
[1015] Fix | Delete
* @return array Upgraded list of widgets to version 3 array format when called from the admin.
[1016] Fix | Delete
*/
[1017] Fix | Delete
function wp_get_sidebars_widgets( $deprecated = true ) {
[1018] Fix | Delete
if ( true !== $deprecated ) {
[1019] Fix | Delete
_deprecated_argument( __FUNCTION__, '2.8.1' );
[1020] Fix | Delete
}
[1021] Fix | Delete
[1022] Fix | Delete
global $_wp_sidebars_widgets, $sidebars_widgets;
[1023] Fix | Delete
[1024] Fix | Delete
/*
[1025] Fix | Delete
* If loading from front page, consult $_wp_sidebars_widgets rather than options
[1026] Fix | Delete
* to see if wp_convert_widget_settings() has made manipulations in memory.
[1027] Fix | Delete
*/
[1028] Fix | Delete
if ( ! is_admin() ) {
[1029] Fix | Delete
if ( empty( $_wp_sidebars_widgets ) ) {
[1030] Fix | Delete
$_wp_sidebars_widgets = get_option( 'sidebars_widgets', array() );
[1031] Fix | Delete
}
[1032] Fix | Delete
[1033] Fix | Delete
$sidebars_widgets = $_wp_sidebars_widgets;
[1034] Fix | Delete
} else {
[1035] Fix | Delete
$sidebars_widgets = get_option( 'sidebars_widgets', array() );
[1036] Fix | Delete
}
[1037] Fix | Delete
[1038] Fix | Delete
if ( is_array( $sidebars_widgets ) && isset( $sidebars_widgets['array_version'] ) ) {
[1039] Fix | Delete
unset( $sidebars_widgets['array_version'] );
[1040] Fix | Delete
}
[1041] Fix | Delete
[1042] Fix | Delete
/**
[1043] Fix | Delete
* Filters the list of sidebars and their widgets.
[1044] Fix | Delete
*
[1045] Fix | Delete
* @since 2.7.0
[1046] Fix | Delete
*
[1047] Fix | Delete
* @param array $sidebars_widgets An associative array of sidebars and their widgets.
[1048] Fix | Delete
*/
[1049] Fix | Delete
return apply_filters( 'sidebars_widgets', $sidebars_widgets );
[1050] Fix | Delete
}
[1051] Fix | Delete
[1052] Fix | Delete
/**
[1053] Fix | Delete
* Retrieves the registered sidebar with the given ID.
[1054] Fix | Delete
*
[1055] Fix | Delete
* @since 5.9.0
[1056] Fix | Delete
*
[1057] Fix | Delete
* @global array $wp_registered_sidebars The registered sidebars.
[1058] Fix | Delete
*
[1059] Fix | Delete
* @param string $id The sidebar ID.
[1060] Fix | Delete
* @return array|null The discovered sidebar, or null if it is not registered.
[1061] Fix | Delete
*/
[1062] Fix | Delete
function wp_get_sidebar( $id ) {
[1063] Fix | Delete
global $wp_registered_sidebars;
[1064] Fix | Delete
[1065] Fix | Delete
foreach ( (array) $wp_registered_sidebars as $sidebar ) {
[1066] Fix | Delete
if ( $sidebar['id'] === $id ) {
[1067] Fix | Delete
return $sidebar;
[1068] Fix | Delete
}
[1069] Fix | Delete
}
[1070] Fix | Delete
[1071] Fix | Delete
if ( 'wp_inactive_widgets' === $id ) {
[1072] Fix | Delete
return array(
[1073] Fix | Delete
'id' => 'wp_inactive_widgets',
[1074] Fix | Delete
'name' => __( 'Inactive widgets' ),
[1075] Fix | Delete
);
[1076] Fix | Delete
}
[1077] Fix | Delete
[1078] Fix | Delete
return null;
[1079] Fix | Delete
}
[1080] Fix | Delete
[1081] Fix | Delete
/**
[1082] Fix | Delete
* Set the sidebar widget option to update sidebars.
[1083] Fix | Delete
*
[1084] Fix | Delete
* @since 2.2.0
[1085] Fix | Delete
* @access private
[1086] Fix | Delete
*
[1087] Fix | Delete
* @global array $_wp_sidebars_widgets
[1088] Fix | Delete
* @param array $sidebars_widgets Sidebar widgets and their settings.
[1089] Fix | Delete
*/
[1090] Fix | Delete
function wp_set_sidebars_widgets( $sidebars_widgets ) {
[1091] Fix | Delete
global $_wp_sidebars_widgets;
[1092] Fix | Delete
[1093] Fix | Delete
// Clear cached value used in wp_get_sidebars_widgets().
[1094] Fix | Delete
$_wp_sidebars_widgets = null;
[1095] Fix | Delete
[1096] Fix | Delete
if ( ! isset( $sidebars_widgets['array_version'] ) ) {
[1097] Fix | Delete
$sidebars_widgets['array_version'] = 3;
[1098] Fix | Delete
}
[1099] Fix | Delete
[1100] Fix | Delete
update_option( 'sidebars_widgets', $sidebars_widgets );
[1101] Fix | Delete
}
[1102] Fix | Delete
[1103] Fix | Delete
/**
[1104] Fix | Delete
* Retrieve default registered sidebars list.
[1105] Fix | Delete
*
[1106] Fix | Delete
* @since 2.2.0
[1107] Fix | Delete
* @access private
[1108] Fix | Delete
*
[1109] Fix | Delete
* @global array $wp_registered_sidebars The registered sidebars.
[1110] Fix | Delete
*
[1111] Fix | Delete
* @return array
[1112] Fix | Delete
*/
[1113] Fix | Delete
function wp_get_widget_defaults() {
[1114] Fix | Delete
global $wp_registered_sidebars;
[1115] Fix | Delete
[1116] Fix | Delete
$defaults = array();
[1117] Fix | Delete
[1118] Fix | Delete
foreach ( (array) $wp_registered_sidebars as $index => $sidebar ) {
[1119] Fix | Delete
$defaults[ $index ] = array();
[1120] Fix | Delete
}
[1121] Fix | Delete
[1122] Fix | Delete
return $defaults;
[1123] Fix | Delete
}
[1124] Fix | Delete
[1125] Fix | Delete
/**
[1126] Fix | Delete
* Converts the widget settings from single to multi-widget format.
[1127] Fix | Delete
*
[1128] Fix | Delete
* @since 2.8.0
[1129] Fix | Delete
*
[1130] Fix | Delete
* @global array $_wp_sidebars_widgets
[1131] Fix | Delete
*
[1132] Fix | Delete
* @param string $base_name Root ID for all widgets of this type.
[1133] Fix | Delete
* @param string $option_name Option name for this widget type.
[1134] Fix | Delete
* @param array $settings The array of widget instance settings.
[1135] Fix | Delete
* @return array The array of widget settings converted to multi-widget format.
[1136] Fix | Delete
*/
[1137] Fix | Delete
function wp_convert_widget_settings( $base_name, $option_name, $settings ) {
[1138] Fix | Delete
// This test may need expanding.
[1139] Fix | Delete
$single = false;
[1140] Fix | Delete
$changed = false;
[1141] Fix | Delete
[1142] Fix | Delete
if ( empty( $settings ) ) {
[1143] Fix | Delete
$single = true;
[1144] Fix | Delete
} else {
[1145] Fix | Delete
foreach ( array_keys( $settings ) as $number ) {
[1146] Fix | Delete
if ( 'number' === $number ) {
[1147] Fix | Delete
continue;
[1148] Fix | Delete
}
[1149] Fix | Delete
if ( ! is_numeric( $number ) ) {
[1150] Fix | Delete
$single = true;
[1151] Fix | Delete
break;
[1152] Fix | Delete
}
[1153] Fix | Delete
}
[1154] Fix | Delete
}
[1155] Fix | Delete
[1156] Fix | Delete
if ( $single ) {
[1157] Fix | Delete
$settings = array( 2 => $settings );
[1158] Fix | Delete
[1159] Fix | Delete
// If loading from the front page, update sidebar in memory but don't save to options.
[1160] Fix | Delete
if ( is_admin() ) {
[1161] Fix | Delete
$sidebars_widgets = get_option( 'sidebars_widgets' );
[1162] Fix | Delete
} else {
[1163] Fix | Delete
if ( empty( $GLOBALS['_wp_sidebars_widgets'] ) ) {
[1164] Fix | Delete
$GLOBALS['_wp_sidebars_widgets'] = get_option( 'sidebars_widgets', array() );
[1165] Fix | Delete
}
[1166] Fix | Delete
$sidebars_widgets = &$GLOBALS['_wp_sidebars_widgets'];
[1167] Fix | Delete
}
[1168] Fix | Delete
[1169] Fix | Delete
foreach ( (array) $sidebars_widgets as $index => $sidebar ) {
[1170] Fix | Delete
if ( is_array( $sidebar ) ) {
[1171] Fix | Delete
foreach ( $sidebar as $i => $name ) {
[1172] Fix | Delete
if ( $base_name === $name ) {
[1173] Fix | Delete
$sidebars_widgets[ $index ][ $i ] = "$name-2";
[1174] Fix | Delete
$changed = true;
[1175] Fix | Delete
break 2;
[1176] Fix | Delete
}
[1177] Fix | Delete
}
[1178] Fix | Delete
}
[1179] Fix | Delete
}
[1180] Fix | Delete
[1181] Fix | Delete
if ( is_admin() && $changed ) {
[1182] Fix | Delete
update_option( 'sidebars_widgets', $sidebars_widgets );
[1183] Fix | Delete
}
[1184] Fix | Delete
}
[1185] Fix | Delete
[1186] Fix | Delete
$settings['_multiwidget'] = 1;
[1187] Fix | Delete
if ( is_admin() ) {
[1188] Fix | Delete
update_option( $option_name, $settings );
[1189] Fix | Delete
}
[1190] Fix | Delete
[1191] Fix | Delete
return $settings;
[1192] Fix | Delete
}
[1193] Fix | Delete
[1194] Fix | Delete
/**
[1195] Fix | Delete
* Output an arbitrary widget as a template tag.
[1196] Fix | Delete
*
[1197] Fix | Delete
* @since 2.8.0
[1198] Fix | Delete
*
[1199] Fix | Delete
* @global WP_Widget_Factory $wp_widget_factory
[1200] Fix | Delete
*
[1201] Fix | Delete
* @param string $widget The widget's PHP class name (see class-wp-widget.php).
[1202] Fix | Delete
* @param array $instance Optional. The widget's instance settings. Default empty array.
[1203] Fix | Delete
* @param array $args {
[1204] Fix | Delete
* Optional. Array of arguments to configure the display of the widget.
[1205] Fix | Delete
*
[1206] Fix | Delete
* @type string $before_widget HTML content that will be prepended to the widget's HTML output.
[1207] Fix | Delete
* Default `<div class="widget %s">`, where `%s` is the widget's class name.
[1208] Fix | Delete
* @type string $after_widget HTML content that will be appended to the widget's HTML output.
[1209] Fix | Delete
* Default `</div>`.
[1210] Fix | Delete
* @type string $before_title HTML content that will be prepended to the widget's title when displayed.
[1211] Fix | Delete
* Default `<h2 class="widgettitle">`.
[1212] Fix | Delete
* @type string $after_title HTML content that will be appended to the widget's title when displayed.
[1213] Fix | Delete
* Default `</h2>`.
[1214] Fix | Delete
* }
[1215] Fix | Delete
*/
[1216] Fix | Delete
function the_widget( $widget, $instance = array(), $args = array() ) {
[1217] Fix | Delete
global $wp_widget_factory;
[1218] Fix | Delete
[1219] Fix | Delete
if ( ! isset( $wp_widget_factory->widgets[ $widget ] ) ) {
[1220] Fix | Delete
_doing_it_wrong(
[1221] Fix | Delete
__FUNCTION__,
[1222] Fix | Delete
sprintf(
[1223] Fix | Delete
/* translators: %s: register_widget() */
[1224] Fix | Delete
__( 'Widgets need to be registered using %s, before they can be displayed.' ),
[1225] Fix | Delete
'<code>register_widget()</code>'
[1226] Fix | Delete
),
[1227] Fix | Delete
'4.9.0'
[1228] Fix | Delete
);
[1229] Fix | Delete
return;
[1230] Fix | Delete
}
[1231] Fix | Delete
[1232] Fix | Delete
$widget_obj = $wp_widget_factory->widgets[ $widget ];
[1233] Fix | Delete
if ( ! ( $widget_obj instanceof WP_Widget ) ) {
[1234] Fix | Delete
return;
[1235] Fix | Delete
}
[1236] Fix | Delete
[1237] Fix | Delete
$default_args = array(
[1238] Fix | Delete
'before_widget' => '<div class="widget %s">',
[1239] Fix | Delete
'after_widget' => '</div>',
[1240] Fix | Delete
'before_title' => '<h2 class="widgettitle">',
[1241] Fix | Delete
'after_title' => '</h2>',
[1242] Fix | Delete
);
[1243] Fix | Delete
$args = wp_parse_args( $args, $default_args );
[1244] Fix | Delete
$args['before_widget'] = sprintf( $args['before_widget'], $widget_obj->widget_options['classname'] );
[1245] Fix | Delete
[1246] Fix | Delete
$instance = wp_parse_args( $instance );
[1247] Fix | Delete
[1248] Fix | Delete
/** This filter is documented in wp-includes/class-wp-widget.php */
[1249] Fix | Delete
$instance = apply_filters( 'widget_display_callback', $instance, $widget_obj, $args );
[1250] Fix | Delete
[1251] Fix | Delete
if ( false === $instance ) {
[1252] Fix | Delete
return;
[1253] Fix | Delete
}
[1254] Fix | Delete
[1255] Fix | Delete
/**
[1256] Fix | Delete
* Fires before rendering the requested widget.
[1257] Fix | Delete
*
[1258] Fix | Delete
* @since 3.0.0
[1259] Fix | Delete
*
[1260] Fix | Delete
* @param string $widget The widget's class name.
[1261] Fix | Delete
* @param array $instance The current widget instance's settings.
[1262] Fix | Delete
* @param array $args An array of the widget's sidebar arguments.
[1263] Fix | Delete
*/
[1264] Fix | Delete
do_action( 'the_widget', $widget, $instance, $args );
[1265] Fix | Delete
[1266] Fix | Delete
$widget_obj->_set( -1 );
[1267] Fix | Delete
$widget_obj->widget( $args, $instance );
[1268] Fix | Delete
}
[1269] Fix | Delete
[1270] Fix | Delete
/**
[1271] Fix | Delete
* Retrieves the widget ID base value.
[1272] Fix | Delete
*
[1273] Fix | Delete
* @since 2.8.0
[1274] Fix | Delete
*
[1275] Fix | Delete
* @param string $id Widget ID.
[1276] Fix | Delete
* @return string Widget ID base.
[1277] Fix | Delete
*/
[1278] Fix | Delete
function _get_widget_id_base( $id ) {
[1279] Fix | Delete
return preg_replace( '/-[0-9]+$/', '', $id );
[1280] Fix | Delete
}
[1281] Fix | Delete
[1282] Fix | Delete
/**
[1283] Fix | Delete
* Handle sidebars config after theme change
[1284] Fix | Delete
*
[1285] Fix | Delete
* @access private
[1286] Fix | Delete
* @since 3.3.0
[1287] Fix | Delete
*
[1288] Fix | Delete
* @global array $sidebars_widgets
[1289] Fix | Delete
*/
[1290] Fix | Delete
function _wp_sidebars_changed() {
[1291] Fix | Delete
global $sidebars_widgets;
[1292] Fix | Delete
[1293] Fix | Delete
if ( ! is_array( $sidebars_widgets ) ) {
[1294] Fix | Delete
$sidebars_widgets = wp_get_sidebars_widgets();
[1295] Fix | Delete
}
[1296] Fix | Delete
[1297] Fix | Delete
retrieve_widgets( true );
[1298] Fix | Delete
}
[1299] Fix | Delete
[1300] Fix | Delete
/**
[1301] Fix | Delete
* Validates and remaps any "orphaned" widgets to wp_inactive_widgets sidebar,
[1302] Fix | Delete
* and saves the widget settings. This has to run at least on each theme change.
[1303] Fix | Delete
*
[1304] Fix | Delete
* For example, let's say theme A has a "footer" sidebar, and theme B doesn't have one.
[1305] Fix | Delete
* After switching from theme A to theme B, all the widgets previously assigned
[1306] Fix | Delete
* to the footer would be inaccessible. This function detects this scenario, and
[1307] Fix | Delete
* moves all the widgets previously assigned to the footer under wp_inactive_widgets.
[1308] Fix | Delete
*
[1309] Fix | Delete
* Despite the word "retrieve" in the name, this function actually updates the database
[1310] Fix | Delete
* and the global `$sidebars_widgets`. For that reason it should not be run on front end,
[1311] Fix | Delete
* unless the `$theme_changed` value is 'customize' (to bypass the database write).
[1312] Fix | Delete
*
[1313] Fix | Delete
* @since 2.8.0
[1314] Fix | Delete
*
[1315] Fix | Delete
* @global array $wp_registered_sidebars The registered sidebars.
[1316] Fix | Delete
* @global array $sidebars_widgets
[1317] Fix | Delete
* @global array $wp_registered_widgets The registered widgets.
[1318] Fix | Delete
*
[1319] Fix | Delete
* @param string|bool $theme_changed Whether the theme was changed as a boolean. A value
[1320] Fix | Delete
* of 'customize' defers updates for the Customizer.
[1321] Fix | Delete
* @return array Updated sidebars widgets.
[1322] Fix | Delete
*/
[1323] Fix | Delete
function retrieve_widgets( $theme_changed = false ) {
[1324] Fix | Delete
global $wp_registered_sidebars, $sidebars_widgets, $wp_registered_widgets;
[1325] Fix | Delete
[1326] Fix | Delete
$registered_sidebars_keys = array_keys( $wp_registered_sidebars );
[1327] Fix | Delete
$registered_widgets_ids = array_keys( $wp_registered_widgets );
[1328] Fix | Delete
[1329] Fix | Delete
if ( ! is_array( get_theme_mod( 'sidebars_widgets' ) ) ) {
[1330] Fix | Delete
if ( empty( $sidebars_widgets ) ) {
[1331] Fix | Delete
return array();
[1332] Fix | Delete
}
[1333] Fix | Delete
[1334] Fix | Delete
unset( $sidebars_widgets['array_version'] );
[1335] Fix | Delete
[1336] Fix | Delete
$sidebars_widgets_keys = array_keys( $sidebars_widgets );
[1337] Fix | Delete
sort( $sidebars_widgets_keys );
[1338] Fix | Delete
sort( $registered_sidebars_keys );
[1339] Fix | Delete
[1340] Fix | Delete
if ( $sidebars_widgets_keys === $registered_sidebars_keys ) {
[1341] Fix | Delete
$sidebars_widgets = _wp_remove_unregistered_widgets( $sidebars_widgets, $registered_widgets_ids );
[1342] Fix | Delete
[1343] Fix | Delete
return $sidebars_widgets;
[1344] Fix | Delete
}
[1345] Fix | Delete
}
[1346] Fix | Delete
[1347] Fix | Delete
// Discard invalid, theme-specific widgets from sidebars.
[1348] Fix | Delete
$sidebars_widgets = _wp_remove_unregistered_widgets( $sidebars_widgets, $registered_widgets_ids );
[1349] Fix | Delete
$sidebars_widgets = wp_map_sidebars_widgets( $sidebars_widgets );
[1350] Fix | Delete
[1351] Fix | Delete
// Find hidden/lost multi-widget instances.
[1352] Fix | Delete
$shown_widgets = array_merge( ...array_values( $sidebars_widgets ) );
[1353] Fix | Delete
$lost_widgets = array_diff( $registered_widgets_ids, $shown_widgets );
[1354] Fix | Delete
[1355] Fix | Delete
foreach ( $lost_widgets as $key => $widget_id ) {
[1356] Fix | Delete
$number = preg_replace( '/.+?-([0-9]+)$/', '$1', $widget_id );
[1357] Fix | Delete
[1358] Fix | Delete
// Only keep active and default widgets.
[1359] Fix | Delete
if ( is_numeric( $number ) && (int) $number < 2 ) {
[1360] Fix | Delete
unset( $lost_widgets[ $key ] );
[1361] Fix | Delete
}
[1362] Fix | Delete
}
[1363] Fix | Delete
$sidebars_widgets['wp_inactive_widgets'] = array_merge( $lost_widgets, (array) $sidebars_widgets['wp_inactive_widgets'] );
[1364] Fix | Delete
[1365] Fix | Delete
if ( 'customize' !== $theme_changed ) {
[1366] Fix | Delete
// Update the widgets settings in the database.
[1367] Fix | Delete
wp_set_sidebars_widgets( $sidebars_widgets );
[1368] Fix | Delete
}
[1369] Fix | Delete
[1370] Fix | Delete
return $sidebars_widgets;
[1371] Fix | Delete
}
[1372] Fix | Delete
[1373] Fix | Delete
/**
[1374] Fix | Delete
* Compares a list of sidebars with their widgets against an allowed list.
[1375] Fix | Delete
*
[1376] Fix | Delete
* @since 4.9.0
[1377] Fix | Delete
* @since 4.9.2 Always tries to restore widget assignments from previous data, not just if sidebars needed mapping.
[1378] Fix | Delete
*
[1379] Fix | Delete
* @global array $wp_registered_sidebars The registered sidebars.
[1380] Fix | Delete
*
[1381] Fix | Delete
* @param array $existing_sidebars_widgets List of sidebars and their widget instance IDs.
[1382] Fix | Delete
* @return array Mapped sidebars widgets.
[1383] Fix | Delete
*/
[1384] Fix | Delete
function wp_map_sidebars_widgets( $existing_sidebars_widgets ) {
[1385] Fix | Delete
global $wp_registered_sidebars;
[1386] Fix | Delete
[1387] Fix | Delete
$new_sidebars_widgets = array(
[1388] Fix | Delete
'wp_inactive_widgets' => array(),
[1389] Fix | Delete
);
[1390] Fix | Delete
[1391] Fix | Delete
// Short-circuit if there are no sidebars to map.
[1392] Fix | Delete
if ( ! is_array( $existing_sidebars_widgets ) || empty( $existing_sidebars_widgets ) ) {
[1393] Fix | Delete
return $new_sidebars_widgets;
[1394] Fix | Delete
}
[1395] Fix | Delete
[1396] Fix | Delete
foreach ( $existing_sidebars_widgets as $sidebar => $widgets ) {
[1397] Fix | Delete
if ( 'wp_inactive_widgets' === $sidebar || str_starts_with( $sidebar, 'orphaned_widgets' ) ) {
[1398] Fix | Delete
$new_sidebars_widgets['wp_inactive_widgets'] = array_merge( $new_sidebars_widgets['wp_inactive_widgets'], (array) $widgets );
[1399] Fix | Delete
unset( $existing_sidebars_widgets[ $sidebar ] );
[1400] Fix | Delete
}
[1401] Fix | Delete
}
[1402] Fix | Delete
[1403] Fix | Delete
// If old and new theme have just one sidebar, map it and we're done.
[1404] Fix | Delete
if ( 1 === count( $existing_sidebars_widgets ) && 1 === count( $wp_registered_sidebars ) ) {
[1405] Fix | Delete
$new_sidebars_widgets[ key( $wp_registered_sidebars ) ] = array_pop( $existing_sidebars_widgets );
[1406] Fix | Delete
[1407] Fix | Delete
return $new_sidebars_widgets;
[1408] Fix | Delete
}
[1409] Fix | Delete
[1410] Fix | Delete
// Map locations with the same slug.
[1411] Fix | Delete
$existing_sidebars = array_keys( $existing_sidebars_widgets );
[1412] Fix | Delete
[1413] Fix | Delete
foreach ( $wp_registered_sidebars as $sidebar => $name ) {
[1414] Fix | Delete
if ( in_array( $sidebar, $existing_sidebars, true ) ) {
[1415] Fix | Delete
$new_sidebars_widgets[ $sidebar ] = $existing_sidebars_widgets[ $sidebar ];
[1416] Fix | Delete
unset( $existing_sidebars_widgets[ $sidebar ] );
[1417] Fix | Delete
} elseif ( ! array_key_exists( $sidebar, $new_sidebars_widgets ) ) {
[1418] Fix | Delete
$new_sidebars_widgets[ $sidebar ] = array();
[1419] Fix | Delete
}
[1420] Fix | Delete
}
[1421] Fix | Delete
[1422] Fix | Delete
// If there are more sidebars, try to map them.
[1423] Fix | Delete
if ( ! empty( $existing_sidebars_widgets ) ) {
[1424] Fix | Delete
[1425] Fix | Delete
/*
[1426] Fix | Delete
* If old and new theme both have sidebars that contain phrases
[1427] Fix | Delete
* from within the same group, make an educated guess and map it.
[1428] Fix | Delete
*/
[1429] Fix | Delete
$common_slug_groups = array(
[1430] Fix | Delete
array( 'sidebar', 'primary', 'main', 'right' ),
[1431] Fix | Delete
array( 'second', 'left' ),
[1432] Fix | Delete
array( 'sidebar-2', 'footer', 'bottom' ),
[1433] Fix | Delete
array( 'header', 'top' ),
[1434] Fix | Delete
);
[1435] Fix | Delete
[1436] Fix | Delete
// Go through each group...
[1437] Fix | Delete
foreach ( $common_slug_groups as $slug_group ) {
[1438] Fix | Delete
[1439] Fix | Delete
// ...and see if any of these slugs...
[1440] Fix | Delete
foreach ( $slug_group as $slug ) {
[1441] Fix | Delete
[1442] Fix | Delete
// ...and any of the new sidebars...
[1443] Fix | Delete
foreach ( $wp_registered_sidebars as $new_sidebar => $args ) {
[1444] Fix | Delete
[1445] Fix | Delete
// ...actually match!
[1446] Fix | Delete
if ( false === stripos( $new_sidebar, $slug ) && false === stripos( $slug, $new_sidebar ) ) {
[1447] Fix | Delete
continue;
[1448] Fix | Delete
}
[1449] Fix | Delete
[1450] Fix | Delete
// Then see if any of the existing sidebars...
[1451] Fix | Delete
foreach ( $existing_sidebars_widgets as $sidebar => $widgets ) {
[1452] Fix | Delete
[1453] Fix | Delete
// ...and any slug in the same group...
[1454] Fix | Delete
foreach ( $slug_group as $slug ) {
[1455] Fix | Delete
[1456] Fix | Delete
// ... have a match as well.
[1457] Fix | Delete
if ( false === stripos( $sidebar, $slug ) && false === stripos( $slug, $sidebar ) ) {
[1458] Fix | Delete
continue;
[1459] Fix | Delete
}
[1460] Fix | Delete
[1461] Fix | Delete
// Make sure this sidebar wasn't mapped and removed previously.
[1462] Fix | Delete
if ( ! empty( $existing_sidebars_widgets[ $sidebar ] ) ) {
[1463] Fix | Delete
[1464] Fix | Delete
// We have a match that can be mapped!
[1465] Fix | Delete
$new_sidebars_widgets[ $new_sidebar ] = array_merge( $new_sidebars_widgets[ $new_sidebar ], $existing_sidebars_widgets[ $sidebar ] );
[1466] Fix | Delete
[1467] Fix | Delete
// Remove the mapped sidebar so it can't be mapped again.
[1468] Fix | Delete
unset( $existing_sidebars_widgets[ $sidebar ] );
[1469] Fix | Delete
[1470] Fix | Delete
// Go back and check the next new sidebar.
[1471] Fix | Delete
continue 3;
[1472] Fix | Delete
}
[1473] Fix | Delete
} // End foreach ( $slug_group as $slug ).
[1474] Fix | Delete
} // End foreach ( $existing_sidebars_widgets as $sidebar => $widgets ).
[1475] Fix | Delete
} // End foreach ( $wp_registered_sidebars as $new_sidebar => $args ).
[1476] Fix | Delete
} // End foreach ( $slug_group as $slug ).
[1477] Fix | Delete
} // End foreach ( $common_slug_groups as $slug_group ).
[1478] Fix | Delete
}
[1479] Fix | Delete
[1480] Fix | Delete
// Move any left over widgets to inactive sidebar.
[1481] Fix | Delete
foreach ( $existing_sidebars_widgets as $widgets ) {
[1482] Fix | Delete
if ( is_array( $widgets ) && ! empty( $widgets ) ) {
[1483] Fix | Delete
$new_sidebars_widgets['wp_inactive_widgets'] = array_merge( $new_sidebars_widgets['wp_inactive_widgets'], $widgets );
[1484] Fix | Delete
}
[1485] Fix | Delete
}
[1486] Fix | Delete
[1487] Fix | Delete
// Sidebars_widgets settings from when this theme was previously active.
[1488] Fix | Delete
$old_sidebars_widgets = get_theme_mod( 'sidebars_widgets' );
[1489] Fix | Delete
$old_sidebars_widgets = isset( $old_sidebars_widgets['data'] ) ? $old_sidebars_widgets['data'] : false;
[1490] Fix | Delete
[1491] Fix | Delete
if ( is_array( $old_sidebars_widgets ) ) {
[1492] Fix | Delete
[1493] Fix | Delete
// Remove empty sidebars, no need to map those.
[1494] Fix | Delete
$old_sidebars_widgets = array_filter( $old_sidebars_widgets );
[1495] Fix | Delete
[1496] Fix | Delete
// Only check sidebars that are empty or have not been mapped to yet.
[1497] Fix | Delete
foreach ( $new_sidebars_widgets as $new_sidebar => $new_widgets ) {
[1498] Fix | Delete
if ( array_key_exists( $new_sidebar, $old_sidebars_widgets ) && ! empty( $new_widgets ) ) {
[1499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function