====== WordPress ====== ===== Creazione database ===== Purtroppo WordPress supporta solo MySQL. CREATE DATABASE wp_m5scp; GRANT ALL PRIVILEGES ON wp_m5scp.* TO "wp_m5scp"@"%" IDENTIFIED BY "MySecret"; FLUSH PRIVILEGES; ===== Versione nazionalizzata ===== Sul sito **[[https://it.wordpress.org/download/releases/]]** sono disponibili gli archivi delle versioni già nazionalizzate in italiano. Rispetto alla versione in inglese (disponibili sul [[https://wordpress.org/download/releases/|repository principale]]), l'archivio italiano contiene la directory **wordpress/wp-content/languages/** e alcuni file accessori hanno piccole diferenze, ma la base del codice è identica. ===== Installazione ===== cd /var/www/ tar zxvf /usr/local/download/wordpress/wordpress-3.4.2-it_IT.tar.gz mv wordpress/ wp chown -R niccolo.niccolo wp/ cd wp/ chown www-data wp-content/uploads/ cp -p wp-config-sample.php wp-config.php vi wp-config.php Proseguire la procedura di installazione via web puntando il browser su **%%http://myhost/wp/wp-admin/install.php%%**. ===== URL per login ===== Se si nascondo il link per la pagina di login, sarà comunque possibile accedervi digitando direttamente il suffisso **wp-login.php** dopo l'URL base del sito. ===== Plugin bbPress ===== Installazione del plugin [[http://wordpress.org/extend/plugins/bbpress/|bbPress]] cd wp/wp-content/plugins/ unzip /usr/local/download/wordpress/bbpress.2.1.3.zip find bbpress -type d | xargs chmod 755 find bbpress -type f | xargs chmod 644 Collegarsi come Admin, //Plugin// -> //bbPress// -> //Attiva//. Nel menu amministrazione compare un nuovo menu Forum in cui è possibile creare nuovi Forum (dibattiti) e nuovi Topic (punti del dibattito). ==== bbPress in italiano ==== Per avere la traduzione in italiano del plugin conviene andare sul sito [[http://translate.wordpress.org/projects/bbpress/]] ed utilizzare la funzione //Export// per scaricare il file aggiornato. **ATTENZIONE!** bbPress è anche un programma stand-alone, ma si tratta sostanzialmente di due prodotti differenti! Vari link, repository e istruzioni che si trovano sulla rete si riferiscono al programma stand-alone e non al plugin per WordPress. Il file deve essere copiato in **''wp-content/languages/bbpress/bbpress-it_IT.mo''**, e compilato (installare il pacchetto **gettext**) con: msgfmt -o bbpress-it_IT.mo bbpress-it_IT.po ===== Configurazione ===== ==== Nuovi utenti ==== Per consentire a nuovi utenti di registrarsi: collegarsi come Admin //Impostazioni// -> //Generale// -> //Chiunque può registrarsi//. Impostare come ruolo predefinito //Sottoscrittore//, in modo che il nuovo iscritto possa solo leggere e non aggiungere o modificare contenuti. * Il nome di login e **case-insensitive**. * L'**email di registrazione** deve essere univoca. * L'immagine da usare come **avatar** viene presa da [[https://it.gravatar.com/]]. Da //Impostazioni// -> //Discussione// conviene abilitare il **//Wavatar (Generato)//** per gli utenti che non hanno il Gravatar, altrimenti compare l'icona standard uguale per tutti. Se si vuole un avater personalizzato salvato in locale si può installare il plugin [[http://wordpress.org/extend/plugins/simple-local-avatars/|Simple Local Avatar]]. ==== Forum ==== Sembra impossibile modificare l'autore che ha iniziato un topic. Direttamente sul database si recupera l'ID dell'utente e l'ID del topic e si effettual ''UPDATE'' manuale: SELECT ID, user_login FROM wp_users WHERE user_login = 'Niccolo'; SELECT ID, post_author, post_status, post_type, post_title FROM wp_posts WHERE post_type = 'topic' AND post_title LIKE '%illuminazione pubblica a LED%'; UPDATE wp_posts SET post_author = "2" WHERE ID = 57; La ricerca standard di WordPress non agisce sul contenuto del forum, vedere se questo plugin è la soluzione migliore: [[http://wordpress.org/extend/plugins/bbpress-search-widget/|bbpress-search-widget]]. ==== Menu ==== Le voci della barra menu vengono aggiunte automaticamente quando si aggiunge una **Pagina**. L'ordine viene impostato dal campo **Ordinamento** della pagina stessa: un valore maggiore sposta il menu più a destra. **Come far comparire un link all'indice dei forum nel menu?** L'indice dei forum viene generato automaticamente all'URL **''.../forums/''**, si potrebbe creare una pagina che ha quell'URL come permalink: un link alla pagina compare nella barra dei menu, ma purtroppo la pagina nasconde l'indice. Se si usa il **tema Ttwenty Ten** (del 2010) allora si possono attivare i template di bbPress Twenty Ten nella configurazione del plugin. Infine si crea una pagina usando il template **bbPress - Forums (Index)**. Quella pagina mostrerà l'indice. Se si usa il **tema Twenty Eleven** invece si deve ricorrere agli **shortcode**: si crea una normale pagina e al suo interno si inserisce una stringa del tipo: [bbp-forum-index] [bbp-single-forum id=2] Scegliere uno degli [[http://codex.bbpress.org/shortcodes/|shortcode di bbPress]] disponibili. Il core di WordPress e i vari plugin espongono tali shortcode (sostanzialmente sono delle macro). Esiste un plugin che automaticamente li mostra durante l'editing di una pagina, il plugin si chiama [[http://wordpress.org/extend/plugins/shortcode-reference/|Shortcode Reference]]. ==== Permessi ==== Vedere [[http://codex.wordpress.org/Roles_and_Capabilities|Roles and Capabilities]] in WordPress. * **Impostazioni WordPress** * **Generale** * Iscrizione: Chiunque può registrarsi * Ruolo predefinito nuovi utenti: Sottoscrittore * **Discussione** * Consenti la scrittura di commenti per i nuovi articoli * Gli utenti devono essere registrati e fare il login per poter inviare commenti * Gli autori di un commento devono avere un commento già approvato in precedenza * **Plugin bbPress settings** * Allow Anonymous Posting: No ^ Attività ^ Sottoscrittore ^ Collaboratore ^ Autore ^ ^ Aggiungere articolo | No | Moderato | Sì | ^ Postare commento | Moderato il 1° | Moderato il 1° | Sì | ^ Aggiungere Forum | No | No | Sì | ^ Aggiungere Topic | Sì | Sì | Sì | ^ Commentare Topic | Sì | Sì | Sì | ^ Upload file | No | No | Sì | ==== Mittente email di servizio ==== Come mittente viene usato **%%wordpress@dominio%%** dove il dominio è il nome del dominio di installzione di WordPress avendo tolto il **www** iniziale. Vedere l'articolo [[http://butlerblog.com/2011/07/08/changing-the-wp_mail-from-address-in-wordpress-without-a-plugin/|Changing the wp_mail from address in wordpress without a plugin]] che spiega come modificarlo a livello di tema. In pratica basta aggiungere questo codice al file **''wp-content/themes/twentyeleven/functions.php''** (cioè del tema in uso): add_filter( 'wp_mail_from', 'my_mail_from' ); function my_mail_from( $email ) { return 'myemail@mydomain.com'; } add_filter( 'wp_mail_from_name', 'my_mail_from_name' ); function my_mail_from_name( $name ) { return 'My Name'; } ==== Intestazione e piè di pagina ==== Si agisce sul tema, in particolare sui file**''wp-content/themes/twentyeleven/header.php''** e **''footer.php''**. ===== Facebook plugin ===== Provati i seguenti plugin: * [[http://wordpress.org/plugins/really-simple-facebook-twitter-share-buttons/|Really simple Facebook Twitter share buttons]] * [[http://wordpress.org/plugins/facebook/|Facebook]] FIXME Sembra abbandonato, ultimo aggiornamento del 2014! * [[http://wordpress.org/plugins/sociable/|Sociable]] FIXME Errori con PHP7! Con il primo compaoiono i classici pulsanti "Mi piace" in fondo ad ogni pagina, per Facebook, Twitter, Google+, e molti altri. Pare che non ci sia la possibilità di fare "condividi" con Facebook, ma solo "mi piace"? Pare che il plugin Facebook (ufficiale) non è compatibile con //Really simple Facebook Twitter share buttons//: si viene avvisati da un warning. FIXME Verificare se possono convivere per avere i pulsanti Twitter, Google+, ecc. Dopo aver attivato il plugin Facebook compare un nuovo menu nella barra di amministrazione a sinistra. Bisogna impostare un **App ID** e un **App secret** che verranno usate per pubblicare sulla timeline di Facebook. Il terzo plugin pare che sia quello più quotato per la condivisione sui social network. Conviene demandare a lui la visualizzazione dei pulsanti di condivisione (permette il "condividi" su Facebook) e lasciare al plugin Facebook solo la funzione di aggiornamento automatico della timeline. Purtroppo non viene più aggiornato da diverso tempo e **non è compatibile con PHP7**. ===== Disabilitare i commenti agli articoli ===== Per togliere i commenti a tutti gli articoli già pubblicati: //Articoli//, selezionarli tutti, //Azioni di gruppo//, //Modifica//, //Commenti// => **Non permettere**. Per gli articoli nuovi: //Impostazioni//, //Discussione//, **Consenti la scrittura di commenti per i nuovi articoli**. ===== Permalink e Rewrite ===== Per far funzionare i permalink del tipo **%%http://www.sito.org/wp/2017/02/24/titolo/%%** è necessario attivare le opportune regole Rewrite del server web. Wordpress fornisce il seguente esempio nel file **.htaccess**: RewriteEngine On RewriteBase /wp/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wp/index.php [L] È preferibile mettere tali direttive nel file di configurazione di Apache (per motivi di performance), ad esempio in una sezione **%%%%**. Nel caso in cui invece si preferisca usare il file .htaccess, è necessaria comunque una direttiva (almeno per Apache 2.4): AllowOverride FileInfo ===== Permessi su filesystem e aggiornamenti ===== In genere l'installazione iniziale dei file PHP si effettua via FTP/SFTP o similari, anche l'installazione e aggiornamento di plugin e temi può essere fatto con lo stesso metodo. WordPress offre nella sua interfaccia di amministrazione web l'opzione per l'aggiornamento dei plugin e temi, in tal caso il codice PHP deve essere in grado di modificare i file sul filesystem. Per questo WordPress può utilizzare due metodi diveris: * **direct** Con questo metodo il codice WordPress presuppone di poter modificare direttamente i file, che pertanto dovranno essere scrivibili dal processo che esegue il server web (tipicamente l'utente www-data in un sistema Debian GNU/Linux). * **FTP/SFTP** Con questo metodo il codice WordPress accederà al filesystem effettuando una sessione FTP o SFTP con le credenziali che verranno fornite in modo interattivo. WordPress tenta entrambi i metodi per vedere se uno dei due funziona. È possibile forzare l'uno o l'altro impostando in **wp-config.php** la seguente direttiva: define('FS_METHOD','direct'); Vedere **[[https://www.danielealessandra.com/come-risolvere-il-problema-della-richiesta-delle-credenziali-ftp-da-parte-di-wordpress/2/|Come risolvere il problema della richiesta delle credenziali FTP da parte di WordPress]]**. ===== Aggiornamento plugin ===== Esiste la possibilità di aggiornare i plugin installati direttamente dal menu amministrazione, Plugin. Tuttavia bisogna che i file siano scrivibili dal server web. L'alternativa manuale prevede: * Dalla dashboard disattivare il plugin in questione, * Scaricare l'archivio e scompattarlo sostituendo al vecchia directory in **''wp-content/plugins/''** (impostare opportunamente il proprietario e i permessi). * Riattivare il plugin dalla dashboard. A giudicare da questo [[https://wordpress.org/support/topic/how-to-update-a-database-table-during-plugin-update|post]] e [[http://wordpress.stackexchange.com/questions/67345/how-to-implement-wordpress-plugin-update-that-modifies-the-database|quest'altro]] non esiste una procedura standard da eseguire dopo l'upgrade (es. per aggiornare il database), ma dovrebbe provvedere il plugin in automatico, ovviamente se è scritto bene. ===== Aggiornamento temi ===== Come per i plugin, esiste la possibilità di aggiornare i temi installati direttamente dal menu amministrazione, Aggiornamenti. Tuttavia bisogna che i file siano scrivibili dal server web. In alternativa si scarica l'archivio e lo si scompatta sostituendo al vecchia directory in **''wp-content/themes/''**, settando opportunamente il proprietario e i permessi. Esiste un repository di temi scaricabili: [[https://wordpress.org/themes/]] ===== Aggiornamento Wordpress ===== Queste le istruzioni per l'aggiornamento manuale. Vedere l'articolo **[[https://wordpress.org/documentation/article/updating-wordpress/|Updating WordPress]]**. - Scaricare l'archivio della nuova versione, eventualmente quello già nazionalizzato in italiano da [[http://it.wordpress.org/|it.wordpress.org]]. - Non esiste purtroppo un modo per mettere il sito off-line, esistono eventualmente dei plugin appositi. - Fare un backup della DocumentRoot: tar zcvf wp.tgz /var/www/wp/ - Fare un dump del database: mysqldump --host=localhost --user=wp_db --password --add-drop-table wp_db > wp_db.dump - Dalla //Bacheca//, //Aggiornamenti// prendere nota delle versioni correnti e aggiornamenti disponibili per plugin e temi. - Da //Aspetto//, //Temi// controllare il tema in uso, eventualmente reimpostare uno di quelli predefiniti. - Da //Plugin//, //Plugin installati// prendere nota di quelli attivi e disattivarli tutti. - **Sostituire** le directory **''wp-admin/''** e **''wp-includes/''** con quelle nuove. - **Copiare** il contenuto della directory **''wp-content/''**, sostituendo i file vecchi (ma lasciando eventuali file in più). - **Copiare** il contenuto della **directory radice**, sostitutendo i file vecchi (ma lasciando eventuali file in più) e avendo cura di non includere le sottodirectory. - Puntare il browser sul'URL del sito, sottodirectory **''/wp-admin''**. Se richiesto procedere all'aggiornamento del database. - Riabilitare i plugin. - Aggiornare (sempre manualmente) i plugin. ===== Cambio URL base ===== Se si migra un sito Wordpress su altro server, generalmente cambia l'**URL base**. Anche l'attivazione del protocollo HTTPS cambia la parte iniziale dell'URL da **%%http://%%** a **%%https://%%**. Wordpress non gestisce molto bene questa situazione perché spesso il contenuto di una pagina o di un articolo include il link ad una pagina interna sotto forma di **link assoluto**, non relativo. La prima cosa da fare è accedere in modalità amministratore e modificare le **Impostazioni generali**, in particolare si deve aggiornare **Indirizzo WordPress (URL)** e **Indirizzo sito (URL)**. Dopo aver fatto la modifica si può controllare se il database è stato aggiornato correttamente: SELECT * FROM wp_options WHERE option_name = 'siteurl'; SELECT * FROM wp_options WHERE option_name = 'home'; Questo modifica il modo in cui vengono generati dinamicamente i link, ma non aggiorna il contenuto di pagine e articoli. Per **aggiornare** il contenuto di **pagine** e **articoli** è necessario **modificare il contenuto del database**. Supponiamo che il vecchio URL base fosse **%%http://www.old-domain.tld/%%** e quello nuovo deve essere **%%https://www.new-domain.tld/%%**, anzitutto si può controllare il contenuto del database: SELECT post_content FROM wp_posts WHERE post_content LIKE '%www.old-domain.tld%'; SELECT guid FROM wp_posts WHERE guid LIKE '%www.old-domain.tld%'; Quindi si procede all'aggiornamento: UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://www.old-domain.tld/', 'https://www.new-domain.tld/'); UPDATE wp_posts SET guid = REPLACE(guid, 'http://www.old-domain.tld/', 'https://www.new-domain.tld/'); ===== Permessi per installazione plugin da pannello web ===== Se si desidera installare componenti aggiuntivi da pannello di controllo web è necessario che il server http abbia i permessi sufficienti per scrivere nella directory **wp-content/upgrade/** e **wp-content/plugins/** (in generale è opportuno che il server web abbia i permessi su tutta la **wp-content/**). Una volta confermato questo, si indica a WordPress di utilizzare il metodo //direct// per accedere al filesystem, in caso contrario WordPress tenterà di fare accesso via FTP chiedendo le credneziali opportune. Per preferire l'accesso //direct// si aggiungono le righe al file **wp-config.php**: define ('FS_METHOD', 'direct'); define ('FS_CHMOD_DIR', 02775); define ('FS_CHMOD_FILE', 0664); In questo modo si possono specificare anche i permessi predefiniti assegnati a file e directory (numero ottale per i permessi Unix). ===== Disabilitare gli aggiornamenti automatici ===== # Disabilitare completamente gli aggiornamenti automatici. define('AUTOMATIC_UPDATER_DISABLED', true); # Aggiorna automaticamente le release maggiori o solo le minori (true/false/'minor'). define('WP_AUTO_UPDATE_CORE', false); # Aggiornamento automatico dei plugin (__return_true/__return_false). add_filter('auto_update_plugin', '__return_false'); # Aggiornamento automatico dei temi (__return_true/__return_false). add_filter('auto_update_theme', '__return_false');