Come posso velocizzare la sezione di amministrazione di WordPress?
Abbiamo diversi siti WordPress con un proxy tra i server su cui risiedono e internet.
Alcune funzionalità in WordPress semplicemente non funzionano:
- Feed RSS nella dashboard
- ricerca dei temi
- ricerca dei plugin
- aggiornamenti del core
Facciamo tutto manualmente e non ci sono problemi particolari tranne la LENTEZZA nel caricamento delle pagine. Sembra che quasi tutto nell'amministrazione impieghi 4-5 secondi per essere elaborato, ad eccezione dell'aggiunta di media - che è sorprendentemente veloce.
Quali sono le prime cose che posso controllare o fare per velocizzare il back-end? (il front-end va velocissimo)
jQuery / JavaScript nel footer
Una cosa che puoi fare è spostare jQuery nel footer articolo del blog. Di default non è necessario nell'header. Dovrai verificare che tutto funzioni ancora, dato che normalmente lo faccio solo per i temi:
<?php
/* Plugin Name: Sposta jQuery nel footer */
function( 'admin_enqueue_scripts', function( $hook )
{
$GLOBALS['wp_scripts']->add_data( 'jquery', 'group', 1 );
} );
Query
Un'altra cosa che velocizza le schermate dell'elenco dei post è ridurre il numero di campi interrogati. Ho notato questo problema tempo fa quando queste schermate si caricavano troppo lentamente a causa delle mie impostazioni con 999 post. Articolo completo qui - Plugin come GitHub Gist.
<?php
/**
* Plugin Name: (WCM) Liste Admin Post Più Veloci
* AuthorURL: http://unserkaiser.com
* License: MIT
*/
add_filter( 'posts_fields', 'wcm_limit_post_fields_cb', 0, 2 );
function wcm_limit_post_fields_cb( $fields, $query )
{
if (
! is_admin()
OR ! $query->is_main_query()
OR ( defined( 'DOING_AJAX' ) AND DOING_AJAX )
OR ( defined( 'DOING_CRON' ) AND DOING_CRON )
)
return $fields;
$p = $GLOBALS['wpdb']->posts;
return implode( ",", array(
"{$p}.ID",
"{$p}.post_date",
"{$p}.post_name",
"{$p}.post_title",
"{$p}.ping_status",
"{$p}.post_author",
"{$p}.post_password",
"{$p}.comment_status",
) );
}
Se non ti servono tutte le colonne, potresti estendere il plugin sopra rimuovendo il contenuto di alcune colonne.
add_filter( 'manage_edit-post_columns', function( $columns )
{
# @TODO Rimuovi le colonne che non ti servono
return $defaults;
} );
Dashboard
Ogni utente entra nella dashboard - che è probabilmente la parte più lenta dell'interfaccia admin. Potresti disattivare alcuni widget che non ti servono, invece di semplicemente nasconderli:
<?php
/** Plugin Name: Rimuovi Widget della Dashboard */
add_action( 'wp_dashboard_setup', function()
{
remove_meta_box( 'dashboard_plugins', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_primary', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );
remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_secondary', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
remove_meta_box( 'dashboard_browser_nag', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_recent_drafts', 'dashboard', 'side' );
remove_meta_box( 'dashboard_incoming_links', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_incoming_links', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
} );
Dati in uscita
Posso solo raccomandare di usare Snitch di Sergej Müller per monitorare quali dati cercano di lasciare la tua installazione. Il plugin permette di sopprimere tutte o solo specifiche connessioni, oltre a identificare connessioni interne specifiche che puntano a task come cron job indesiderati e cose simili. Puoi guardare il suo codice sorgente per esempi se non vuoi il pacchetto completo. Sergej normalmente scrive codice molto leggibile con un generoso uso di spazi bianchi.

Consiglio di installare questo https://github.com/johnbillion/query-monitor e verificare i seguenti aspetti: utilizzo della memoria, richieste HTTP, AJAX e query lente.
Potrebbero essere le revisioni, un plugin che utilizza AJAX, una query inefficiente, ecc.
Sarai in grado di capire se è necessario aggiungere più RAM al tuo server, cosa che solitamente risolve molti problemi di lentezza nel pannello di amministrazione, specialmente se ci sono più editor che lavorano contemporaneamente.
Ma oltre a qualche trucco qua e là non esiste una soluzione universale, devi verificare come i temi e i plugin interagiscono con l'area di amministrazione.

Oltre ad alcune delle risposte ben suggerite sopra, potresti limitare o disabilitare il "heartbeat" di WordPress che può rallentare drasticamente l'area di amministrazione se hai molte schermate aperte o molti utenti che lo utilizzano contemporaneamente. Diversi host come WP-Engine hanno già una variante di questa configurazione automaticamente.
function optimize_heartbeat_settings( $settings ) {
$settings['autostart'] = false;
$settings['interval'] = 60;
return $settings;
}
add_filter( 'heartbeat_settings', 'optimize_heartbeat_settings' );
function disable_heartbeat_unless_post_edit_screen() {
global $pagenow;
if ( $pagenow != 'post.php' && $pagenow != 'post-new.php' )
wp_deregister_script('heartbeat');
}
add_action( 'init', 'disable_heartbeat_unless_post_edit_screen', 1 );
Un'altra cosa che potresti provare è modificare alcune costanti del file wp-config.php
. Disabilitare le revisioni dei post aiuterebbe senza dubbio, ma se non vuoi farlo, potresti almeno limitarle.
define('WP_POST_REVISIONS', 5);
Altre due costanti che di solito modifico per mantenere le cose ottimizzate sono quelle relative al cestino vuoto e agli autosalvataggi.
define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );
