Fichier wp-config.php – Modification Avancé

Dans un précédent article, je vous présentais brièvement du fichier wp-config.php, et de sa configuration de base.
je vous présenterais aujourd’hui quelques options avancés de ce fichier.
Dans cette article, j’essaierai d’être le plus complet possible sur ce fichier. Si une option n’y apparaît pas (ou ne fonctionne pas), n’hésitez pas à me le dire par commentaire.
Je le rajouterai sans problème.

Adresse WordPress

La valeur définie par WP_SITEURL correspond à l’adresse où existent vos fichiers de base de WordPress. En clair, si ils sont dans le dossier courant de votre projet, l’option correspondra au premier exemple ci-dessous.
La valeur doit commencer obligatoirement par http:// ou https://, et il ne doit jamais finir par un « / ».
Dès que cette valeur se trouve dans wp-config.php, elle se substitue à la valeur siteurl de la table wp_options et désactive le champ ‘Adresse web de WordPress (URL)’ que l’on trouve dans les réglages

define('WP_SITEURL', 'http://example.com');
define('WP_SITEURL', 'http://example.com/wordpress');

Il est possible de définir dynamiquement WP_SITEURL à partir de $_SERVER[‘HTTP_HOST’] ou $_SERVER[‘SERVER_NAME’], comme vu avec les exemples ci-dessous. Pour la sécurité, il est préférable d’utiliser le ‘SERVER_NAME’ car il est générée par le serveur.

define('WP_SITEURL', 'http://'.$_SERVER['HTTP_HOST'].'/path/to/wordpress');
define('WP_SITEURL', 'http://'.$_SERVER['SERVER_NAME'].'/path/to/wordpress');

Adresse du Blog

WP_HOME est une option du wp-config.php qui est similaire à WP_SITEURL. La valeur de WP_HOME prend le pas sur la valeur home dans la table wp_options .
La valeur correspond à l’adresse que vous souhaitez voir tapée dans le navigateur par les utilisateurs pour accéder à votre site. Vous pouvez vous inspirer des deux premier exemples de code ci-dessus.

define(‘WP_HOME’, ‘http://example.com’);
define(‘WP_HOME’, ‘http://example.com/wordpress’);

Vous pouvez définir dynamiquement cette valeur avec $_SERVER[‘HTTP_HOST’] comme dans le troisième exemple ci-dessus.

Déplacer le Répertoire wp-content

Il est tout à fait possible de déplacer ce dossier, en définissant les options WP_CONTENT_DIR et WP_CONTENT_URL.
Voici un exemple ci-dessous, avec le répertoire wp-content dans le dossier blog :

define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/blog/wp-content' );
define( 'WP_CONTENT_URL', 'http://local.wordpress-test/blog/wp-content');

Pour WP_CONTENT_DIR, il est important de mettre le chemin local complet du répertoire, sans le slash final). WP_CONTENT_URL doit être l’URL complète du répertoire (sans slash final).

[important] : il faut mettre automatiquement ces options au dessus de la ligne incluant le fichier wp-setting.php, sous peine du non-fonctionnement de ces options.

Renommer le dossier wp-content

Comme le dossier wp-content peut être déplacer, il peut aussi être renommé.
Ci-dessous, vous pouvez voir quelques lignes permettant ce genre de chose.

// Renommer le dossier 'wp-content'
define ('WP_CONTENT_FOLDERNAME', '/wp-services');
define( 'WP_CONTENT_DIR', ABSPATH . WP_CONTENT_FOLDERNAME );
define( 'WP_SITEURL', 'http://' . $_SERVER[ 'HTTP_HOST' ] );
define( 'WP_CONTENT_URL', WP_SITEURL . WP_CONTENT_FOLDERNAME );

Ces lignes fonctionnent sans problèmes. Elles présentent 2 solutions différentes à cette problématique.
Dans cette exemple, le dossier wp-content est changé en wp-services.

Déplacer les dossiers ‘plugins’ et ‘uploads’

Il est aussi possible de déplacer quelques dossiers contenu dans wp-content, notamment plugins et uploads.

// Changer le dossier 'plugins' de place
define('WP_PLUGIN_DIR',$_SERVER['DOCUMENT_ROOT'].'/blog/wp-content/plugins');
define('WP_PLUGIN_URL','http://local.wordpress-test/blog/wp-content/plugins');
// Changer le dossier 'uploads' de place
define('UPLOADS','/blog/wp-content/uploads');

Je n’ai pas trouvé la technique pour faire la même chose avec les dossiers themes et mu-plugins.
Si quelqu’un sait, qu’il n’hésite pas à me transmettre l’information. Je mettrai cette article à jour.

La révision des articles

Par défaut, cette option est à true.
Elle enregistre toutes les révisions, de chaque articles et page. Sur le long terme, cela peut grandement polluer la base de donnée.
Il est donc possible de changer cette option. Il existe deux autres solutions.
Soit il suffit de mettre un chiffre pour le nombre de révision que l’on veut (par exemple 3, 5 ou 10), soit mettre l’option à false (pour aucune révision).

define('WP_POST_REVISIONS', 3);
define('WP_POST_REVISIONS', false);

Désactiver les éditeurs

Il existe, dans la partie administrateur de WordPress, des éditeurs permettant la modification des thèmes et des plugins. Pour éviter tous problèmes de sécurité et d’erreur, il est convenu de les désactiver avec l’option ci-dessous.

define('DISALLOW_FILE_EDIT',true);

PS : Cette option permet aussi de supprimer les liens Theme Editor et Plugin Editor du menu de l’administration.
Cette solution est à privilégier aux astuces comme la suivante :

add_action( 'admin_init', 'gkp_remove_editor_menu' );
function gkp_remove_editor_menu() {
    remove_submenu_page( 'themes.php', 'theme-editor.php' );
}

Vidage de la corbeille

A la suppression d’un élément dans WordPress, il va dans la corbeille.
De base, il va y rester 30 jours mais il est possible de changer ce chiffre (par exemple 7).
Il est aussi possible de désactiver cette corbeille en mettant le chiffre 0.

define('EMPTY_TRASH_DAYS', 7);
define('EMPTY_TRASH_DAYS', 0);

Débogage

Cette option permet l’affichage des erreurs dans WordPress. Il est à false par défaut.
L’exemple ci-dessous permet d’enregistrer tous les avis d’erreur et les avertissements dans un fichier appelé debug.log dans wp-content, juste pour les erreurs PHP.

define('WP_DEBUG', true);
if (WP_DEBUG) {
  define('WP_DEBUG_LOG', true);
  define('WP_DEBUG_DISPLAY', true);
  define('SCRIPT_DEBUG', true);
  @ini_set('display_errors',0);
}

Il existe aussi une option pour le Javascript et le CSS. elle se nomme SCRIPT_DEBUG.

define('SCRIPT_DEBUG', true);

Conclusion

Cette liste n’est pas exhaustive, car il existe environ 160 options dans ce fichier wp-config.php.
Je suis loin de tous les connaître, et donc de tous vous les expliquer.

Comme je disai dans l’intro, si vous avez envie que j’en rajoute un dans l’article, n’hésitez pas à me le dire, je le ferai.
Même chose si vous voulez plus d’explication sur une option déjà mise, mais que j’aurai mal expliqué.