web-dev-qa-db-fra.com

URL de rappel dans WordPress

Je souhaite utiliser ce service OnWebChange pour surveiller le moment où un site Web change et modifier le mien en conséquence. Il me notifierait via un rappel d'URL à l'URL de mon site Web avec une méthode HTTP POST. Quels outils/API/plugins est-ce que j'utilise pour "attraper" ces POST? J'ai beaucoup cherché et trouvé seulement comment faire un POST, mais pas les "attraper" quand POST provient d'un autre site web. Si j'avais accès à Apache, je pourrais installer un module pour vider POST, mais j'utilise Wordpress sans accès.

2
user2879175

C'est assez simple, utilisez simplement l'URL de votre site web :)

Après cela, déclenchez simplement une action lorsque la page est chargée via la méthode HTTP POST et raccrochez avec un rappel.

add_action( 'wp_loaded', function() {
   if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) {
      // fire the custom action
      do_action('onchangeapi', new PostListener($_POST));
   }
} );

Et maintenant la classe d'auditeur

class PostListener {

   private $valid = false;

   /**
    * @param array $postdata $_POST array
    */
   public function __construct(array $postdata) {
       $this->valid = $this->validatePostData($postdata);
   }

   /**
    * Runs on 'onchangeapi' action
    */
   public function __invoke() {
      if ($this->valid) {
          // do whatever you need to do 
          exit();
      }
   }

   /**
    * @param array $postdata $_POST array
    * @return bool
    */
   private function validatePostData(array $postdata) {
      // check here the $_POST data, e.g. if the post data actually comes
      // from the api, autentication and so on
   } 
}
2
gmazzap