Switch language

wpseek.com
A WordPress-centric search engine for devs and theme authors




wp_ajax_save_widget [ WordPress Function ]

wp_ajax_save_widget ( No parameters )
Defined at:



No description yet.

Source


<?php
function wp_ajax_save_widget() {
    global 
$wp_registered_widgets$wp_registered_widget_controls$wp_registered_widget_updates;

    
check_ajax_referer'save-sidebar-widgets''savewidgets' );

    if ( !
current_user_can('edit_theme_options') || !isset($_POST['id_base']) )
        
wp_die( -);

    unset( 
$_POST['savewidgets'], $_POST['action'] );

    
do_action('load-widgets.php');
    
do_action('widgets.php');
    
do_action('sidebar_admin_setup');

    
$id_base $_POST['id_base'];
    
$widget_id $_POST['widget-id'];
    
$sidebar_id $_POST['sidebar'];
    
$multi_number = !empty($_POST['multi_number']) ? (int) $_POST['multi_number'] : 0;
    
$settings = isset($_POST['widget-' $id_base]) && is_array($_POST['widget-' $id_base]) ? $_POST['widget-' $id_base] : false;
    
$error '<p>' __('An error has occurred. Please reload the page and try again.') . '</p>';

    
$sidebars wp_get_sidebars_widgets();
    
$sidebar = isset($sidebars[$sidebar_id]) ? $sidebars[$sidebar_id] : array();

    
// delete
    
if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) {

        if ( !isset(
$wp_registered_widgets[$widget_id]) )
            
wp_die$error );

        
$sidebar array_diff$sidebar, array($widget_id) );
        
$_POST = array('sidebar' => $sidebar_id'widget-' $id_base => array(), 'the-widget-id' => $widget_id'delete_widget' => '1');
    } elseif ( 
$settings && preg_match'/__i__|%i%/'key($settings) ) ) {
        if ( !
$multi_number )
            
wp_die$error );

        
$_POST['widget-' $id_base] = array( $multi_number => array_shift($settings) );
        
$widget_id $id_base '-' $multi_number;
        
$sidebar[] = $widget_id;
    }
    
$_POST['widget-id'] = $sidebar;

    foreach ( (array) 
$wp_registered_widget_updates as $name => $control ) {

        if ( 
$name == $id_base ) {
            if ( !
is_callable$control['callback'] ) )
                continue;

            
ob_start();
                
call_user_func_array$control['callback'], $control['params'] );
            
ob_end_clean();
            break;
        }
    }

    if ( isset(
$_POST['delete_widget']) && $_POST['delete_widget'] ) {
        
$sidebars[$sidebar_id] = $sidebar;
        
wp_set_sidebars_widgets($sidebars);
        echo 
"deleted:$widget_id";
        
wp_die();
    }

    if ( !empty(
$_POST['add_new']) )
        
wp_die();

    if ( 
$form $wp_registered_widget_controls[$widget_id] )
        
call_user_func_array$form['callback'], $form['params'] );

    
wp_die();
}
?>

Examples [ wp-snippets.com ]

Google Arama Sonuçlarý

Dahasý ...

Kullanýcý Tartýþmalarý [ wordpress.org ]

- Bulunamadý -

Yeni bir konu yaz ...

0 User Note(s)

Henüz yok. Ýlk sen ol!

Yeni Ekle ...



HTML5 Powered with CSS3 / Styling, Performance & Integration, and Semantics