Modificare e personalizzare WordPress attraverso 20 Snippets

06/11/2019

Gli snippets WordPress di solito vengono aggiunti nel file function.php del tema utilizzato. La loro finalità principale è quella di modificare le funzionalità di base fornite da WordPress. Funzionalità di base che lo rendono un CMS piuttosto semplice da utilizzare, ma spesso per gli utenti alle prime armi, magari non non esperti di tecnologia, può rivelarsi troppo complesso da poter gestire.

In questo articolo vedremo apportare alcune modifiche che di fatto semplificano il sistema mediante la disabilitazione o la rimozione di alcune aree del CMS non necessarie per l'utente non amministratore. In tal modo lo possiamo rendere meno complesso e più amichevole per l'utente finale.

Gli snippets di seguito ci permetteranno di controllare quasi tutti gli aspetti dell'area di amministrazione di WordPress e di personalizzarli a beneficio del livello di usabilità. Esistono ovviamente molti plugin che ottengono gli stessi risultati di questi snippets, ma modificando il codice si ottiene una gestione delle varie funzionalità più immediata e nella maggior parte dei casi non sarà necessario aggiornarli periodicamente come invece accade per i plugin.

20 Snippets per WordPress

Tali modifiche sarà possibile implementarle, oltre che attraverso i vari hook di WordPress, anche attraverso la modifica del file .htaccess e delle varie query che interessano il database MySQL.

Disabilitazione della possibilità per gli utenti di disattivare i plugin WordPress

Questo snippet è particolarmente utile se abbiamo assegnato ad un'utente i privilegi di attivazione / disattivazione dei plugin, di fatto consentendogli di aggiungere nuovi plug-in. Ma se il sito che abbiamo creato richiede alcuni plug-in di base per funzionare, tali plugin ovviamente non dovono essere mai disattivati.

Il codice seguente rimuoverà i collegamenti "Disattiva" da qualsiasi plug-in che riteniamo fondamentale, oltre a rimuovere i collegamenti "Modifica" da tutti i plug-in.

Codice da inserire in functions.php:

add_filter( 'plugin_action_links', 'slt_lock_plugins', 10, 4 );
function slt_lock_plugins( $actions, $plugin_file, $plugin_data, $context ) {
	// Remove edit link for all
	if ( array_key_exists( 'edit', $actions ) )
		unset( $actions['edit'] );
	// Remove deactivate link for crucial plugins
	if ( array_key_exists( 'deactivate', $actions ) && in_array( $plugin_file, array(
		'slt-custom-fields/slt-custom-fields.php',
		'slt-file-select/slt-file-select.php',
		'slt-simple-events/slt-simple-events.php',
		'slt-widgets/slt-widgets.php'
	)))
		unset( $actions['deactivate'] );
	return $actions;
}

Disabilitare la possibilità per gli utenti di cambiare il tema WordPress

In modo analogo alla disabilitazione dei plug-in sopra descritti anche per i temi molto spesso è necessario precludere la possibilità agli utenti di poter cambiare il tema attivo. Il codice seguente rimuoverà l'opzione di menu "Aspetto" dalla Dashboard.

A tale scopo inseriremo il seguente snippet in functions.php:

add_action( 'admin_init', 'slt_lock_theme' );
function slt_lock_theme() {
	global $submenu, $userdata;
	get_currentuserinfo();
	if ( $userdata->ID != 1 ) {
		unset( $submenu['themes.php'][5] );
		unset( $submenu['themes.php'][15] );
	}
}

Disabilitazione voci nel menu del pannello di amministrazione di WordPress

In base alle preferenze del cliente potrebbe essere necessario disabilitare / nascondere le opzioni del menu WordPress. Con questo snippet potremo nascondere qualsiasi menu di livello superiore (post, contenuti multimediali, link, strumenti...).

Codice per il file functions.php:

function remove_menus () {
global $menu;
	$restricted = array(__('Dashboard'), __('Posts'), __('Media'), __('Links'), __('Pages'), __('Appearance'), __('Tools'), __('Users'), __('Settings'), __('Comments'), __('Plugins'));
	end ($menu);
	while (prev($menu)){
		$value = explode(' ',$menu[key($menu)][0]);
		if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
	}
}
add_action('admin_menu', 'remove_menus');

Disabilitazione dei sottomenu del pannello di amministrazione WordPress

Nel caso in cui l'utente necessita solo di alcuni sottomenu con il seguente snippet potremo disabilitate / nascoste selettivamente le sezioni che non interessano.

Per ottenere ciò aggiungeremo il seguente codice in functions.php:

function remove_submenus() {
  global $submenu;
    unset($submenu['index.php'][10]); // Removes 'Updates'.
    unset($submenu['themes.php'][5]); // Removes 'Themes'.  
    unset($submenu['options-general.php'][15]); // Removes 'Writing'.
    unset($submenu['options-general.php'][25]); // Removes 'Discussion'.       
}
add_action('admin_menu', 'remove_submenus');

L'ID menu si trova in wp-admin/menu.php.

Personalizzare le voci del menu Admin di WordPress in base al nome utente

Per poter limitare l'accesso di un determinato utente a determinate voci del menu, e comunque mantenere il menu con le voci che interessano, questo snippet può essere d'aiuto.

Sostituire "client-username" con il nome utente per il quale attivare le modifiche e incollare questo codice in functions.php:

function remove_menus()
{
    global $menu;
    global $current_user;
    get_currentuserinfo();

    if($current_user->user_login == 'clients-username')
    {
        $restricted = array(__('Posts'),
                            __('Media'),
                            __('Links'),
                            __('Pages'),
                            __('Comments'),
                            __('Appearance'),
                            __('Plugins'),
                            __('Users'),
                            __('Tools'),
                            __('Settings')
        );
        end ($menu);
        while (prev($menu)){
            $value = explode(' ',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
        }// end while

    }// end if
}
add_action('admin_menu', 'remove_menus');

Rimuovere i meta-box di WordPress dalle schermate dell'editor di post e pagine

La pubblicazione di post e pagine è molto probabilmente la chiave del business dei nostri utenti e probabilmente il motivo principale per cui è stato scelto WordPress come piattaforma per la creazione del sito web. Per evitare qualsiasi confusione all'interno delle schermate dell'editor di post / pagine, potrebbe essere utile rimuovere meta-box non utilizzate (campi personalizzati, commenti recenti, tag post ...).

Incollalo nel tuo functions.phpe modifica come richiesto:

function remove_extra_meta_boxes() {
remove_meta_box( 'postcustom' , 'post' , 'normal' ); // custom fields for posts
remove_meta_box( 'postcustom' , 'page' , 'normal' ); // custom fields for pages
remove_meta_box( 'postexcerpt' , 'post' , 'normal' ); // post excerpts
remove_meta_box( 'postexcerpt' , 'page' , 'normal' ); // page excerpts
remove_meta_box( 'commentsdiv' , 'post' , 'normal' ); // recent comments for posts
remove_meta_box( 'commentsdiv' , 'page' , 'normal' ); // recent comments for pages
remove_meta_box( 'tagsdiv-post_tag' , 'post' , 'side' ); // post tags
remove_meta_box( 'tagsdiv-post_tag' , 'page' , 'side' ); // page tags
remove_meta_box( 'trackbacksdiv' , 'post' , 'normal' ); // post trackbacks
remove_meta_box( 'trackbacksdiv' , 'page' , 'normal' ); // page trackbacks
remove_meta_box( 'commentstatusdiv' , 'post' , 'normal' ); // allow comments for posts
remove_meta_box( 'commentstatusdiv' , 'page' , 'normal' ); // allow comments for pages
remove_meta_box('slugdiv','post','normal'); // post slug
remove_meta_box('slugdiv','page','normal'); // page slug
remove_meta_box('pageparentdiv','page','side'); // Page Parent
}
add_action( 'admin_menu' , 'remove_extra_meta_boxes' );

Rimuovi le colonne delle pagine di WordPress

L'aggiunta di questo codice consente di rimuovere qualsiasi colonna dalla sezione "Pagine" che ritieni non necessaria per il tuo cliente.

Aggiungere il seguente snippet in functions.php:

function remove_pages_columns($defaults) {
  unset($defaults['comments']); 
  return $defaults;    
} 
add_filter('manage_pages_columns', 'remove_pages_columns');

Rimuovi le colonne dei post di WordPress

Simile allo snippet sopra, questo codice rimuoverà le colonne dalla pagina dei post.

Inserie il seguente codice in functions.php:

function remove_post_columns($defaults) {
  unset($defaults['comments']);
  return $defaults;    
} 
add_filter('manage_posts_columns', 'remove_post_columns');

Rimozione dei widget predefiniti dalla dashboard di WordPress

La maggior parte dei widget predefiniti presenti nella Dashboard spesso non risultano necessari per gli utenti del sito e danno un'idea di eccessiva complessità. Questo snippet rimuove tutti i widget pre-definiti della Dashboard.

Da inserire in functions.php:

function example_remove_dashboard_widgets() {

	global $wp_meta_boxes;

	unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);	
	unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
	unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
	unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
}
add_action('wp_dashboard_setup', 'example_remove_dashboard_widgets' );

Per l'elenco di tutti i widget si rimanda alla pagina dell'API dei widget della Dashboard sul Codex.

Creazione widget per la dashboard WordPress personalizzati

Quando si creano temi per i clienti potrebbe essere utile e apprezzato creare un widget di benvenuto personalizzato nella Dashboard. Questo snippet creerà un semplice widget "Hello World" e può essere facilmente modificato a seconda delle esigenze.

Codice da inserire in functions.php:

function example_dashboard_widget_function() {
	echo "Hello World, I'm a great Dashboard Widget";
} 
 
function example_add_dashboard_widgets() {
	wp_add_dashboard_widget('example_dashboard_widget', 'Example Dashboard Widget', 'example_dashboard_widget_function');
}

add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' );

Aggiungi, rimuovi e riordina i Widget della Dashboard per ruolo

Per una Dashboard WordPress personalizzata in base ai ruoli utente, limitando la comparsa di determinati widget ai soli utenti con i ruoli di "editori" ed "autori" ed eliminandoli dalla dashbord per gli altri ruoli. Questo snippet eliminerà solo il widget "Collegamenti in entrata" per autori ed editori ed eliminerà tutti gli altri widget nel caso si appartenga ad altri ruoli.

Da inserire in functions.php:

function tidy_dashboard()
{
  global $wp_meta_boxes, $current_user;

  if(in_array('author', $current_user->roles) || in_array('editor', $current_user->roles))
  {
    unset($wp_meta_boxes['dashboard']['normal ']['core']['dashboard_incoming_links']);
  }
   
  unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
  unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
  unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
 
}

add_action('wp_dashboard_setup', 'tidy_dashboard');

Ecco un elenco di come deselezionare ciascuno dei widget della Dashboard predefiniti:

unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);

Rimozione e spostamento del metabox autore ed opzioni schermo

Questo codice rimuoverà la metabox Autore e le Opzioni Schermo, aggiungendo le le opzioni schermo nel metabox di pubblicazione.

Da inserire in functions.php:

add_action( 'admin_menu', 'remove_author_metabox' );
add_action( 'post_submitbox_misc_actions', 'move_author_to_publish_metabox' );
function remove_author_metabox() {
    remove_meta_box( 'authordiv', 'post', 'normal' );
}
function move_author_to_publish_metabox() {
    global $post_ID;
    $post = get_post( $post_ID );
    echo '<div id="author" class="misc-pub-section" style="border-top-style:solid; border-top-width:1px; border-top-color:#EEEEEE; border-bottom-width:0px;">Author: ';
    post_author_meta_box( $post );
    echo '</div>';
}

Aggiungere e rimuovere collegamenti da barra amministrazione WordPress

La barra di amministrazione di WordPress consente di accedere rapidamente a tutte le aree principali del sito, come la sezione per la creazione di un nuovo post o pagina, la moderazione dei commenti oppure la modifica dei widget. I snippet di seguito consentiranno di aggiungere oppure di rimuovere tali link.

Il seguente snippet aggiungerà collegamenti alla barra di amministrazione.

Da aggiungere al file functions.php del tema in uso:

function my_admin_bar_link() {
	global $wp_admin_bar;
	if ( !is_super_admin() || !is_admin_bar_showing() )
		return;
	$wp_admin_bar->add_menu( array(
	'id' => 'diww',
	'parent' => 'my-blogs',
	'title' => __( 'Titolo del link da aggiungere'),
	'href' => admin_url( 'http://misitourl.com/wp-admin.php' )
	) );
}
add_action('admin_bar_menu', 'my_admin_bar_link');

Questo snippet invece rimuoverà i collegamenti dalla barra di amministrazione.

Da aggiungere in functions.php:

function remove_admin_bar_links() {
	global $wp_admin_bar;
	$wp_admin_bar->remove_menu('my-blogs');
	$wp_admin_bar->remove_menu('my-account-with-avatar');
}
add_action( 'wp_before_admin_bar_render', 'remove_admin_bar_links' );

Come mostrare messaggio importante da parte dell'amministratore WordPress

Questo snippet ci consentirà di mostrare un messaggio personalizzato sulla dashboard di tutto gli utenti che hanno effettuato l'accesso. Particolarmente utile se è necessario informare un cliente / utente di eventuali problemi riscontrati sulla piattaforma, quali ad esempio rallentamenti inaspettati o interventi di manutenzione programmata.

Snippet da aggiungere al file functions.php del tema in uso:

function showMessage($message, $errormsg = false)
{
	if ($errormsg) {
		echo '<div id="message" class="error">';
	}
	else {
		echo '<div id="message" class="updated fade">';
	}

	echo "<p><strong>$message</strong></p></div>";
}    

Di seguito aggiungeremo uno snippet con la funzione per le notifiche dell'amministratore, contenente un messaggio personalizzato:

function showAdminMessages()
{
    showMessage("Aggiornare il database il prima possibile...", true);

    if (user_can('manage_options') {
       showMessage("Hello admins!");
    }
}
add_action('admin_notices', 'showAdminMessages');

Nascondere l'avviso di aggiornamento di WordPress

Spesso capita che per alcuni iscritti con determinati ruoli è stata disabilitata la possibilità di poter effettuare aggiornamenti sulla piattaforma. Per quei utenti, attraverso il seguente snippet, sarà possibile rimuovere il messaggio di aggiornamento di WordPress.

Da inserire nel file functions.php del tema in uso:

add_action('admin_menu','wphidenag');
function wphidenag() {
remove_action( 'admin_notices', 'update_nag', 3 );
}

Modifica URL di accesso del pannello di controllo WordPress

L'URL predefinito per l'accesso ad un sito web basato su WordPress di corrisponde a https://www.tuosito.it/wp-login.php. Attraverso il file .htaccess sarà possibile modificare il percorso standard e renderlo più semlice da ricordare, ad esempio cambiandolo in https://www.tuosito.it/login.

A tale scopo inseriremo nel file .htaccess il seguente codice:

RewriteRule ^login$ http://yoursite.com/wp-login.php [NC,L]

Modifica del testo del piè di pagina della dashboard

Quando si crea un sito per un cliente può essere utile poter personalizzare il testo del piè di pagina della dashboard. Il seguente snippet ci consentirà di apportare tale modifica.

Modificare "Inserisci il testo personalizzato" e aggiungerlo nel file functions.php del tema in uso:

function remove_footer_admin () {
    echo "Testo personalizzato";
} 

add_filter('admin_footer_text', 'remove_footer_admin');

Modifica del logo del pannello di accesso WordPress

Quando si creano temi per i clienti una delle loro aspettative potrebbe essere quella di avere il proprio logo nel pannello di accesso. Sostituire il logo standard di WorPress con un logo personalizzato è un'operazione molto semplice.

Le dimensioni ottimali del nuovo logo dovranno essere di 326×82 pixel e tale logo andrà collocato nella cartella "immagini" del tema in uso.

Sostituire il nome del file "nuovologo.png" con il nome del proprio logo e aggiungere il seguente codice nel file functions.php del tema in uso:

function custom_login_logo() {
	echo '<style type="text/css">h1 a { background: url('.get_bloginfo('template_directory').'/companylogo.png) 50% 50% no-repeat !important; }</style>';
}
add_action('login_head', 'custom_login_logo');

Sostituzione del logo standard della dashboard WordPress

Il prossimo passo nella personalizzazione del backend di WordPress è la sostituzione del logo che compare nella Dashboards. In questo caso sarà più opportuno creare un'immagine trasparente (.gif o .png) di 30x31px. Una volta creata la salveremo nella cartella delle immagini del tema.

Sostituire "custom-logo.gif" con il nome del file appena creato e inserire il seguente snippet nel file functions.php:

add_action('admin_head', 'my_custom_logo');

function my_custom_logo() {
echo '
<style type="text/css">
#header-logo { background-image: url('.get_bloginfo('template_directory').'/images/custom-logo.gif) !important; }
</style>
';
}
Condividi l'articolo...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Aricoli correlati

Emilio Petrozzi  P. I.V.A. IT03080230604 - Professionista ai sensi della Legge 4/2013
twitter-squarelinkedin-squaregithub-altwordpressfacebook-officialgitlab