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');