';
foreach ($sidebars_widgets as $sidebarid => $sidebar) {
if (is_array($sidebar)) {
$text .= '
[do_widget_area '.$sidebarid.']';
foreach ($sidebar as $i=> $w) {
$text .= '- ';
$text .= '[do_widget id="'.$w.'"]';
$text .= '
';
};
$text .= '
';
}
}
$text .= '';
return ($text);
}
function amr_get_widgets_sidebar($wid) {
/* walk through the registered sidebars with a name and find the id - will be something like sidebar-integer.
take the first one that matches */
global $_wp_sidebars_widgets;
foreach ($_wp_sidebars_widgets as $sidebarid => $sidebar) {
if (is_array($sidebar) ) { // ignore the 'array version' sidebarid that isnt actually a sidebar
foreach ($sidebar as $i=> $w) {
if ($w == $wid) {
return $sidebarid;
}
};
}
}
return (false); // widget id not in any sidebar
}
function amr_get_sidebar_id ($name) {
/* walk through the registered sidebars with a name and find the id - will be something like sidebar-integer.
take the first one that matches */
global $wp_registered_sidebars;
foreach ($wp_registered_sidebars as $i => $a) {
if ((isset ($a['name'])) and ( $a['name'] === $name))
return ($i);
}
return (false);
}
function amr_get_sidebar_name ($id) { /* dont need anymore ? or at least temporarily */
/* walk through the registered sidebars with a name and find the id - will be something like sidebar-integer. take the first one */
global $wp_registered_sidebars;
foreach ($wp_registered_sidebars as $i => $a) {
if ((isset ($a['id'])) and ( $a['id'] === $id)) {
if (isset($a['name'])) return ($a['name']);
else return ($id);
}
}
return (false);
}
function amr_check_if_widget_debug() {
global $said;
// only do these debug if we are logged in and are the administrator
if (is_admin()) return false; // if running in backend, then do not do debug. 20151217
if ((!is_user_logged_in()) or (!current_user_can('administrator')))
return false;
if (isset($_REQUEST['do_widget_debug'])) {
if (empty($said)) {
$said = true;
}
else return true;
$url_without_debug_query = esc_url(remove_query_arg( 'do_widget_debug'));
$eek = 'Remove debug';
echo '
Note: Debug help is only shown to a logged-in Administrator.'
.$eek
.'
';
$text = amr_show_shortcode_widget_possibilities () ;
echo $text;
return true;
}
else
return false;
}
function amr_show_widget_debug($type='', $name, $id, $sidebar) {
global $wp_registered_sidebars, $wp_registered_widgets, $_wp_sidebars_widgets, $debugcount;
// only do these debug if we are logged in and are the administrator
$debug = amr_check_if_widget_debug();
$text = amr_show_shortcode_widget_possibilities () ;
if ($type=='empty') {
if (current_user_can('administrator'))
$text = 'Problem with do_widget shortcode? Try one of the following:
'.$text;
}
elseif (($type=='which one') and ($debug)) {
$text = 'Debug help is on: Is your widget in the widgets_for_shortcodes sidebar?
'
.$text;
}
return ($text);
}
function amr_save_shortcodes_sidebar() { // when switching a theme, save the widgets we use for the shortcodes as they are getting overwritten
$sidebars_widgets = wp_get_sidebars_widgets();
if (!empty($sidebars_widgets['widgets_for_shortcodes']))
update_option('sidebars_widgets_for_shortcodes_saved',$sidebars_widgets['widgets_for_shortcodes']);
else { // our shortcodes sidebar is empty but when to fix ?
}
}
function amr_restore_shortcodes_sidebar() { // when switching a theme, restore the widgets we use for the shortcodes as they are getting overwritten
global $_wp_sidebars_widgets;
$sidebars_widgets = wp_get_sidebars_widgets();
if (empty($sidebars_widgets['widgets_for_shortcodes'])) {
$sidebars_widgets['widgets_for_shortcodes'] = get_option('sidebars_widgets_for_shortcodes_saved');
update_option('sidebars_widgets',$sidebars_widgets);
}
}
function amr_upgrade_sidebar() { // added in 2014 February for compatibility.. keep for how long. till no sites running older versions.?
$sidebars_widgets = wp_get_sidebars_widgets();
if (!empty($sidebars_widgets['Shortcodes']) and empty($sidebars_widgets['widgets_for_shortcodes'])) { // we need to upgrade
$sidebars_widgets['widgets_for_shortcodes'] = $sidebars_widgets['Shortcodes'];
unset ($sidebars_widgets['Shortcodes']);
update_option('sidebars_widgets',$sidebars_widgets );
add_action( 'admin_notices', 'widgets_shortcode_admin_notice' );
}
}
function widgets_shortcode_admin_notice() {
?>
Please go to widgets page and check your "widgets for shortcodes" sidebar. It will hopefully have been corrected upgraded with your widgets and all should be fine.