In mythis example, only one user is able to add/delete widgets.
Don't know why, but setting display:none
was not working via CSS to hide the widgets descriptions, so was done in jQuery.
function wpse_53398_script_printer(){
// used to display the front end site
$site = get_site_url();
// here you can filter who can add/delete widgets
global $current_user;
if ( 'kursus' != $current_user->data->user_login )
{
echo <<<HTML
<!-- CSS to hide the widgets descriptions = real estate gains -->
<style type="text/css">#widget-list .widget-description {display:none;}</style>
<script type="text/javascript">
jQuery(document).ready( function($) {
// swaps the placement of the panels Available Widgets and Incactive Widgets
$('#available-widgets').appendTo('#widgets-left');
});
</script>
HTML;
}
else
{
echo <<<HTML
<!-- CSS to prevent the div from briefly appearing beforbefore the jQuery can act -->
<style type="text/css">#widgets-left {display:none;}</style>
<script type="text/javascript">
// reload the contents of the iframe
function Reload () {
var f = document.getElementById('the-front-end');
f.src = f.src;
}
jQuery(document).ready( function($) {
// inject other content to fill the void
$('<div style="width:70%;"><img70%;"><input src="httptype="button" value="Reload front page" onclick="Reload();" style="float://cdn.sstatic.net/wordpress/imgright"><br /logo.png?v=123"><><iframe id="the-front-end" src="{$site}" frameborder="0" width="100%" height="700"></div>').insertBefore('#widgets-left');
// removes the whole left side of the widgets page
$('#widgets-left').remove();
});
</script>
HTML;
}
}
add_action('admin_footer-widgets.php', 'wpse_53398_script_printer');