Wordpress: rimuovere i menu dell’amministrazione

Sabato 1 Novembre, 2008

Può risultare utile, a volte, "oscurare" alcuni menu dell'amministrazione di Wordpress, soprattutto se si è sviluppato un sito/blog per un cliente e non si vuole permettere l'accesso a funzionalità particolarmente delicate. Esistono Plugin che svolgono questa già funzione ma, per avere un controllo personale e completo, vediamo come funziona in dettaglio questa caratteristica.
Come sempre sfruttiamo le utilissime Action messe a disposizione da Wordpress, in questo caso admin_menu. Tramite la variabile globale $menu possiamo accedere alla lista dei menu dell'amministrazione. Possiamo individuare il menu da "eliminare" in due modi: tramite l'etichetta o tramite il link a cui punta (vedi parti commentati nell'esempio qui sotto). Nell'esempio proposto vengono "oscurate" le voci di menu Design, Impostazioni e Plugins:

PHP:
  1. function remove_menu_item() {
  2.     global  $menu;
  3.     // tramite label
  4.     $removes = array( 'Design', 'Impostazioni', 'Plugins' );
  5.     // tramite link
  6.     // $removes = array( 'themes.php', 'options-general.php', 'plugins.php' );
  7.     foreach( $removes as $todel )
  8.         foreach($menu as $key => $sm) if($sm[0] == $todel ) { unset( $menu[$key] ); break; }
  9.         // tramite link
  10.         // foreach($menu as $key => $sm) if($sm[2] == $todel ) { unset( $menu[$key] ); break; } 
  11. }
  12. //
  13. add_action('admin_menu',    'remove_menu_item');

L'uso del link come chiave per la rimozione ($sm[2] nelle parti commentate nel codice qui sorpra), è utile quando non si ha certezza della lingua - localizzazione - con cui è stato installato Wordpress. Con questa tecnica, tuttavia, il menu è rimosso solo a livello di interfaccia, quindi sarà possibile ancora accedere alla pagina tramite una link diretto.

Post correlati

Menu combo categorie in WordPress 2.5.1

Giovedì 10 Luglio, 2008

Per creare un menu/combo (tag select) senza un bottone di submit e in grado di posizionarsi sulla categoria attualmente visualizzata, si può sfruttare il seguente codice:

HTML:
  1. <select name="event-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'>
  2. <option value="">Seleziona una categoria</option>
  3. <?php
  4. $foo = ( (is_category())?(single_cat_title('', false)):"" );
  5. $categories = get_categories('orderby=name&hierarchical=0'); $option = '';
  6. foreach ($categories as $cat) {
  7.     $option .= '<option '.( ($cat->cat_name == $foo)?"selected":"" ).' value="/category/'.$cat->category_nicename.'">';
  8.     $option .= $cat->cat_name;
  9.     $option .= ' ('.$cat->category_count.')';
  10.     $option .= '</option>';
  11. }
  12. echo $option;
  13. ?>
  14. </select>

L'evento onchange, nel tag select, permette di eliminare un eventuale bottone di submit. La funzione WordPress is_category(), invece, permette di stabilire se stiamo visualizzando un "archivio" categorie, così da ottenere il titolo/nome dell'attuale categoria visualizzata.

Post correlati