web-dev-qa-db-fra.com

Existe-t-il un point d'ancrage pour traiter une requête PUT reposante sur le réseau principal dans wordpress?

Je joue avec Backbone.js (Great!) Et je souhaite synchroniser les données de mon modèle avec la wordpress ajax api (3.6.1) côté serveur. Adapté à cela http://addyosmani.github.io/backbone-fundamentals/#restful-persistence , voici mon exemple de colonne vertébrale:

var new_posts;
var post;
(function($){
    var Post = Backbone.Model.extend({
        id: '',
        title: '',
    });
    var Posts = Backbone.Collection.extend({
        model: Post,
        url: APP.ajaxurl + '?action=postaction'  //APP.ajaxurl == http://localhost/wordpress/wp-admin/admin-ajax.php
    });
    new_posts = new Posts();
    new_posts.add([{'id':0, 'title':'Hermann Hesse'}, {'id':1, 'title':'Wolfgang v. Goethe'}, {'id':2, 'title':'Friedrich Schiller'}]);
    post = new_posts.get(2);
    post.set('title','Honore de Balzac');

    post.save();

}(jQuery));

Je choisis le deuxième élément (modèle) dans une collection, modifie l'attribut 'title' et souhaite le sauvegarder côté serveur.

Backbone crée maintenant avec une requête 'PUT' une requête RESTFUL et ajoute l'index du modèle dans la collection ('2') à l'URL:

http://localhost/wordpress/wp-admin/admin-ajax.php?action=postaction/2

... mais je n'ai AUCUNE IDÉE comment gérer le 'action' modifié de GET (maintenant: postaction/2), il semble que l'approche standard de wordpress avec un crochet d'action 'wp_ajax_' n'est pas le bon pour gérer ça

add_action( 'wp_ajax_postaction', '<a function for handling>' );

Bien sûr, je ne peux pas coder un crochet d'action pour chaque paramètre possible, qui peut être modifié! Existe-t-il une autre approche wordpress pour gérer une telle requête PUT/Restful via Ajax?

Pour toute idée, merci d'avance! Je vous remercie.

2
Alex

Les hooks dynamiques wp_ajax_ servent principalement à la commodité de l’organisation côté PHP.

Vous pouvez choisir de ne pas l'utiliser, alors vous devrez probablement:

  • accrocher dans admin_init
  • vérifier que DOING_AJAX est true
  • vérifiez que la requête ($_REQUEST['action'] et le reste) est votre type de requête spécial

Ensuite, traitez votre demande et die() ou laissez quoi que ce soit passer au traitement normal.

1
Rarst