Désactiver la vérification des contraintes de clefs :
set foreign_key_checks=0;

Lister le type des tables :
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'database_name';

functions.php

add_action( 'user_register', 'set_default_values_when_creating_user', 10, 1 );
function set_default_values_when_creating_user( $user_id ) {
    update_user_meta($user_id, 'show_admin_bar_front', 'false');
    //update_user_meta($user_id, 'first_name', 'toto');
    //etc.
}

Rajouter ça dans le fichier functions.php :

//Empêcher l'éditeur wysiwyg d'ajouter des balises <p> et <br> :
//Sur les fichiers 'content'
remove_filter( 'the_content', 'wpautop' );

//Sur les fichiers 'exerpt'
remove_filter( 'the_excerpt', 'wpautop' );

//Empêche la conversion de certaines entités texte en entités HTML
remove_filter( ‘the_content’, ‘wptexturize’);

Se placer dans ../wp-content/theme/$THEME/languages/
Créer le fichier fr_FR.po
Ajouter tous les endroits à traduire comme sur l’exemple :

# Translation in French (France)
# This file is distributed under the license wtfpl http://www.wtfpl.net

msgid ""
msgstr ""
"Project-Id-Version: Version 1"
"Report-Msgid-Bugs-To: Personne"
"POT-Creation-Date: 19/05/2015"
"MIME-Version: 1.0"
"Content-Type: text/plain; charset=UTF-8"
"Content-Transfer-Encoding: 8bit"
"Plural-Forms: nplurals=2; plural=n>1;"
"Language: fr_FR"
"X-Generator: Vim"

#: ../functions/shortcodes.php:1140
msgid "Phone Number"
msgstr "Téléphone"

... etc. ... etc. ...

 
Compiler le fichier .po en fichier .mo :
$ msgfmt -o fr_FR.mo fr_FR.po

Le compilateur de fichiers .po pour MacOs est fourni avec Gettext
Installer Gettext :
$ brew install gettext
Renseigner le path dans le .bashrc :
export PATH=${PATH}:/usr/local/opt/gettext/bin

Désactiver les mises à jour automatiques :
Ajouter dans le fichier wp-config.php
define( 'AUTOMATIC_UPDATER_DISABLED', true );

Désactiver l’éditeur interne de fichiers de WordPress :
Ajouter dans le fichier wp-config.php
define( 'DISALLOW_FILE_EDIT', true );

Désactiver le versionning auto des articles (revisions) :
Ajouter dans le fichier wp-config.php
define('WP_POST_REVISIONS', false);

Faire un fichier .po qui contient les traductions.
Le fichier doit avoir le nom du plugin auquel on rajoute -fr_FR

Le fichier contient :

# Translation of plugin amr-users in French (France)
# This file is distributed under the license wtfpl http://www.wtfpl.net

msgid ""
msgstr ""
"Project-Id-Version: Version 1"
"Report-Msgid-Bugs-To: Personne"
"POT-Creation-Date: 05/08/2014"
"MIME-Version: 1.0"
"Content-Type: text/plain; charset=UTF-8"
"Content-Transfer-Encoding: 8bit"
"Plural-Forms: nplurals=2; plural=n>1;"
"Language: fr_FR"
"X-Generator: Vim est ton ami"

#: amr-users/includes/ausers-pluggable.php:1117
msgid "Displaying %s–%s of %s"
msgstr "Affichage de %s à %s sur %s"

 

Compiler en .mo :
# msgfmt -o nom_du_plugin-fr_FR.mo nom_du_plugin-fr_FR.po

Déposer le fichier .mo dans :
../wp-content/languages/plugins/nom_du_plugin-fr_FR.mo

Installer Apache :
# apt-get install apache2

Installer Mysql :
# apt-get install mysql-server

Installer PHP :
# apt-get install php5 php5-mysql

Créer une base :
# mysql -uroot -p
mysql> create database BASE;
mysql> grant select,insert,update,delete,create,drop,alter on BASE.* to USER@localhost identified by 'PASS';
mysql> flush privileges;

Télécharger et installer WordPress :
$ cd /var/www
$ curl -O wordpress.org/latest.tar.gz
$ tar -xvzf latest.tar.gz
$ mv wordpress/ monsite/
$ cd

Mettre à jour le fichier wp-config :
$ vi /var/www/monsite/wp-config.php

define('WP_HOME','http://monsite.lan/');
define('WP_SITEURL','http://monsite.lan/');
define('DB_NAME', 'BASE');
define('DB_USER', 'USER');
define('DB_PASSWORD', 'PASS');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', 'utf8_general_ci');
define('WPLANG', 'fr_FR');

 
Configurer Apache :
# vi /etc/apache2/sites-available/monsite.conf

<VirtualHost *:80>

    ServerAdmin webmaster@localhost
    ServerName monsite.lan
    DocumentRoot /var/www/monsite
    DirectoryIndex index.php
    
    <Directory /var/www/monsite/>
        Options FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/monsite.error.log
    CustomLog ${APACHE_LOG_DIR}/monsite.access.log combined

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

 
Activer le virtualhost :
# a2ensite monsite.conf
# a2enmod rewrite.load
# a2enmod headers.load
# /etc/init.d/apache2 restart

Renseigner le DNS local :
# vi /etc/hosts
127.0.0.1 monsite.lan

Créer un répertoire enfant a côté du thème principal :
$ cd .../site/wp-content/themes/
$ mkdir theme-child

Créer un fichier style.css qui contient :

/*
 Theme Name:   Theme Child
 Theme URI:    ...
 Description:  ...
 Author:       ...
 Author URI:   ...
 Template:     NOM_DU_THEME_PRINCIPAL
 Version:      ...
 Tags:         ...
 Text Domain:  ...
*/

@import url("../NOM_DU_THEME_PRINCIPAL/style.css");

/* =Theme customization starts here
-------------------------------------------------------------- */

 

Règles de gestion :

CSS :
Le css du parent est chargé, ensuite celui du thème enfant.
Le css du thème enfant surcharge le css du thème principal.

Fonctions :
Le fichier functions.php du thème parent est chargé, ensuite celui du thème enfant.
Les fonctions du thème enfant NE SURCHARGENT PAS les fonctions du thème parent. (Provoque une erreur)

Fichiers PHP :
Les fichiers PHP du thème enfant REMPLACENT les fichiers du même nom, du thème parent.

Supprimer une fonction du thème principal depuis le thème enfant :

Dans le fichier functions.php du thème enfant :

// Enlève des fonctionnalités du thème parent
function remove_parent_features() {
  // Exemple : N'affiche pas le bouton "Home" dans le menu
  remove_filter('wp_nav_menu_items','simplex_nav_menu_items');
  ...
}
  
add_action('after_setup_theme','remove_parent_features');