Optimiser WordPress : remplacer wp_cron par un vrai CRON job


optimiser_wp_cron

WordPress comporte une fonction native pour ses fonctions automatiques nommée wp_cron.
Elle sert notamment à diverses activités de maintenance (vérifications de mises à jour etc.), à publier les articles programmés à l’avance qui ont été créés avec une date de publication future et elle est utilisée par de nombreux plugins qui ont des fonctions automatisées.

Mais wp_cron est loin de la perfection. Si vous utilisez de telles fonctions, vous avez déjà probablement eu affaire à des actions programmées manquées.

Il se trouve que wp_cron, contrairement à ce que son nom laisse croire, est bien loin d’un véritable CRON, mais plutôt un “pseudo cron job”.
Cette fonction s’active en réalité au moment du chargement des pages. Ainsi, lorsqu’un internaute visite votre site, wp_cron s’active à chaque chargement de page et vérifie si des actions programmées sont en attentes dans la base de donnée.

Cela peut poser deux problèmes majeurs:
– Si vous ne recevez aucune visite durant une période donnée, les actions programmées pour cette période ne seront simplement pas effectuées.
– En se lançant au chargement de chaque page, wp_cron affecte négativement le temps de chargement de vos pages.

Voici un petit guide pour y remedier en remplaçant wp_cron par un vrai CRON job sur votre serveur d’hébergement.

Désactiver wp_cron

1. Avec votre client FTP préferé (ou avec le “file manager” de votre cPanel), téléchargez le fichier wp-config.php qui se trouve à la racine de votre installation WordPress.

2. Ouvrez ce fichier avec un éditeur de texte (notepad sous windows ou textedit sous mac feront l’affaire) et copiez/collez la ligne ci-dessous.

define('DISABLE_WP_CRON', true);

3. Sauvegardez le fichier et replacez le sur votre serveur.

Ça y est, wp_cron est désactivé. Toutefois ne vous arrêtez pas là, il faut maintenant le remplacer sous peine de perdre toutes les fonctions automatisées de WP !

Créer un vrai CRON job pour remplacer wp_cron

4. Dans votre cPanel, accédez à la section “cron jobs”.

5. Sous la partie “Add new cron job”, sélectionnez un intervalle de 15 minutes. (Il semble que cet intervalle offre les meilleures performances).

6. Dans le champs “Command”, copiez/coller la ligne suivante, en changeant bien sûr VOTRESITE.COM par l’URL de votre site)

wget -q -O - http://VOTRESITE.COM/wp-cron.php > /dev/null 2>&1

7. Cliquez sur “add new cron job”, et voilà !

On y est, vous venez de remplacer le wp_cron natif de WordPress par un vrai CRON job, beaucoup plus performant.
Désormais, toutes les fonctions dépendantes de wp_cron s’exécuteront toutes les 15 minutes, réglées comme un coucou, qu’il pleuve, qu’il vente ou qu’il neige, indépendamment des chargements de pages !
Fini les actions programmées manquées, et vous avez au passage optimisé le temps de chargement de vos pages.


  1. isabelle says:

    Nickel Merci, bien que je sois chez Ovh, ton tuto m’a beaucoup aidé. BOnne Année ! 🙂

  2. Marie says:

    Bonjour
    merci pour ce tuto
    Je viens également de le faire sur OVH mais par contre j’ai mis en fréquence tous les lundi à 23H.
    J’ai fait au pif car en fait je ne vois pas trop pourquoi je devrais l’exécuter tous les jours pour un site qui met en ligne 1 article par semaine 😉 (site statique).
    Merci encore