web-dev-qa-db-fra.com

Nous est-il possible WP Mode de maintenance de base pour une courte pause pendant l’exécution d’un plug-in?

J'ai écrit un plugin pour supprimer manuellement (sur le bouton Admin Push) plusieurs centaines de messages créés par un autre plugin. Cet autre plugin crée des publications basées sur une API externe.

Je suis dans une situation où le plug-in API commence parfois à créer de nouvelles publications au milieu de la suppression.

Je me demande s’il est possible d’utiliser le mode de maintenance principal de WP pendant quelques secondes pour suspendre l’exécution de tout le reste du site pendant la suppression?

J'ai consulté update-core.php et update.php, mais ce que je faisais pour lancer et mettre fin au mode de maintenance n'était pas tout à fait clair. J'espérais avoir une fonction permettant de définir le mode maintenance et une autre permettant de supprimer le mode maintenance, mais je ne la vois pas. Ouvert à d'autres moyens d'éviter cette condition de concurrence.

2
jb510

Pour ce faire, créez un fichier .maintenance à la racine de votre instance WordPress. Votre script devrait ressembler à ceci:

// create maintenance file before starting the long lasting process
file_put_contents( ABSPATH . '.maintenance', '<?php $upgrading = ' . time() . ';' );

// do stuff ...

// after finishing working on your stuff remove maintenance file
unlink( ABSPATH . '.maintenance' );

WordPress vérifie si le fichier de maintenance existe ou non à la racine et, le cas échéant, vérifie ensuite la variable $upgrading pour afficher le message de maintenance pendant 10 minutes seulement.

Par défaut, WordPress affiche un message standard en mode maintenance. Il contient le texte suivant:

Briefly unavailable for scheduled maintenance. Check back in a minute.

Si vous souhaitez exécuter votre propre script et générer une sortie de maintenance unique, vous pouvez créer un fichier maintenance.php dans votre dossier wp-content. WordPress charge ce fichier s'il existe et arrête l'exécution d'un processus après l'appel du fichier.

3
Eugene Manuilov