Wordpress add_menu

Abbiamo visto già molti tipi di funzioni condizionali , commento, da inserire in functions.php etc.e etc. Questo tipo di funzioni che vi mostreremo adesso vi permetteranno di creare dei menù nel front end del vostro blog wordpress. Guardiamo quindi come funzionano e quali sono.

 

 

La funzione più importante per creare un menù di primo livello è add_menu_page la cui sintassi è la seguente.

<?php add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position ); ?>

dove

  • page_title è il testo che deve essere visualizzato quando selezioniamo un menu
  • menu_title è il nome del menu
  • capability ossia la capacità per questo menu di essere visualizzato ad un utente. Senza addentrarci per il momento nello specifico quando si utilizzano le Setting API assume valore ‘manage_options”
  • menu_slug lo slug che si vuole fare assumere al menù. Unica precauzione è che deve essere unico.
  • function la funzione che richiamiamo per compiere le operazioni
  • icon_url rappresenta l’url dell’icona da usare per questo menù. Si tratta di un parametro facoltativo.
  • position la posizione nel menù dove dovrebbe apparire. Il valore di default è omesso.

Aggiunge un sotto menù

Vediamo adesso la funzione per aggiungere un sotto menu

<?php add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function); ?>

dove valori sono gli stessi del menu’ precedente fa eccezione il primo. ossia

parent_slug rappresenta lo slug del nome per il menù , oppure il nome di admin WordPress standard che supplisce al menu top level nel quale volete inserire il sotto menù oppure il file del plugins presente nel menu’ stesso. Per esempio.

  • Per Bacheca: add_submenu_page(‘index.php’,…)
  • Per Articoli: add_submenu_page(‘edit.php’,…)
  • Per Media: add_submenu_page(‘upload.php’,…)
  • Per Pagine: add_submenu_page(‘edit.php?post_type=page’,…)
  • Per Commento: add_submenu_page(‘edit-comments.php’,…)
  • Per Custom Post Types: add_submenu_page(‘edit.php?post_type=your_post_type’,…)
  • Per Aspetto: add_submenu_page(‘themes.php’,…)
  • Per Plugins: add_submenu_page(‘plugins.php’,…)
  • Per Utenti: add_submenu_page(‘users.php’,…)
  • Per Strumenti: add_submenu_page(‘tools.php’,…)
  • Per Impostazioni: add_submenu_page(‘options-general.php’,…)

Un possibile esempio è

<?php
add_menu_page('Page title', 'Top-level menu title', 'manage_options', 'my-top-level-handle', 'my_magic_function');
add_submenu_page( 'my-top-level-handle', 'Page title', 'Sub-menu title', 'manage_options', 'my-submenu-handle', 'my_magic_function');
?>

oppure potrebbe essere

<?php add_submenu_page('edit.php?post_type=wiki', 'Options', 'Options', 'manage_options', 'wiki-options', array(&$this, 'options_page') ); ?>

Questo per aggiungere un menù o un sottomenù generico.
Se invece volessimo aggiungere un menù ad una dei menù già presenti nel back end del WordPress dovremmo aggiungere una funzione ad hoc.

Per esempio add_menu funzione wordpress

Wordpress add_menu

Bacheca

<?php add_dashboard_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>

Articoli

<?php add_posts_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>

Media

<?php add_media_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>

Pagine

<?php add_pages_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>

Commenti

<?php add_comments_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>

Aspetto

<?php add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>

Plugins

<?php add_plugins_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>

Utenti

<?php add_users_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>

Strumenti

<?php add_management_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>

Impostazioni

<?php add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>

Vi lascio quindi un esempio omni comprensivo degli add_menu , dopo un pò di pratica vedrete che non si tratta di nulla di veramente complicato.

<?php
/*
Plugin Name: Menu Esempio 
Plugin URI: http://noirsolutions.net
Description: Menu Esempio del funzionamento delle funzioni WordPress per aggiungere menu
Author: Staff WordPress
Author URI: http://noirsolutions.net/author/staff
*/

// aggangio per aggiungere admin menu
add_action('admin_menu', 'mt_add_pages');

// funziuone action
function mt_add_pages() {
 // Aggiungi un sotto menu sotto impostazioni
 add_options_page(__('Test Settings','menu-test'), __('Test Settings','menu-test'), 'manage_options', 'testsettings', 'mt_settings_page');

// Aggiungi un sotto menu sotto Strumenti
 add_management_page( __('Test Tools','menu-test'), __('Test Tools','menu-test'), 'manage_options', 'testtools', 'mt_tools_page');

// Aggiungi un  menu top level
 add_menu_page(__('Test Toplevel','menu-test'), __('Test Toplevel','menu-test'), 'manage_options', 'mt-top-level-handle', 'mt_toplevel_page' );

//Aggiungi un sotto menu top level
 add_submenu_page('mt-top-level-handle', __('Test Sublevel','menu-test'), __('Test Sublevel','menu-test'), 'manage_options', 'sub-page', 'mt_sublevel_page');

//Aggiungi un altro sotto menu top level
 add_submenu_page('mt-top-level-handle', __('Test Sublevel 2','menu-test'), __('Test Sublevel 2','menu-test'), 'manage_options', 'sub-page2', 'mt_sublevel_page2');
}


function mt_settings_page() {
 echo "<h2>" . __( 'Test Settings', 'menu-test' ) . "</h2>";
}

// mt_tools_page() displays the page content for the Test Tools submenu
function mt_tools_page() {
 echo "<h2>" . __( 'Test Tools', 'menu-test' ) . "</h2>";
}


function mt_toplevel_page() {
 echo "<h2>" . __( 'Test Toplevel', 'menu-test' ) . "</h2>";
}


function mt_sublevel_page() {
 echo "<h2>" . __( 'Prova sotto livello', 'menu-test' ) . "</h2>";
}

function mt_sublevel_page2() {
 echo "<h2>" . __( 'Prova Menu sottolivello 2', 'menu-test' ) . "</h2>";
}

?>

 

La funzione

 __(

Rappresenta unicamente una funzione per la traduzione se presente non introduce nessuna novità