web-dev-qa-db-fra.com

Interrogation d'une publication qui inclut deux taxonomies à l'aide de l'API JSON Rest

J'utilise le plugin JSON Rest API ( https://wordpress.org/plugins/json-rest-api/ ). J'ai deux taxonomies personnalisées avec un terme chacune:

  1. Catégories de pièces intérieures
    • Œil
  2. Symptômes Catégories (Homme)
    • Fracture simple fracture

Je dois afficher les messages correspondant à ces deux catégories et termes. J'ai essayé ce qui suit:

http://mcsc.hawkhorne.com/wp-json/posts?type=male-conditions&filter[taxonomy]=inner-part-categories&filter[term]=Eye&filter[taxonomy]=symptoms-categories-man&filter[term]=Broken%20Bone%20Single%20Fracture

Mais cette méthode ne renvoie que les messages sous la dernière taxonomie et terme déclarés. Par exemple, si je change la taxe et le terme comme tels:

http://mcsc.hawkhorne.com/wp-json/posts?type=male-conditions&filter[taxonomy]=symptoms-categories-man&filter[term]=Broken%20Bone%20Single%20Fracture&filter[taxonomy]=inner-part-categories&filter[term]=Eye

Il affichera alors uniquement les publications sous les catégories de partie interne de taxe et le terme Eye et ignorera la première requête relative à la taxe et au terme.

Je cherche depuis des heures et j'ai trouvé une solution.

Je pensais également que peut-être un tableau de tri pourrait être passé dans la demande de données ajax, un peu comme cela se passe dans WP Query. J'ai le code suivant:

data: {filter: {'posts_per_page': -1, 'post_status': 'publish', 'orderby': 'title', 'order': 'ASC'}},

Merci de votre aide.

1
Chris

Premièrement, votre problème avec le dernier type de message et/ou le terme qui remplace tout le texte précédent est dû au fait que 'filtre' est un tableau à 2 dimensions. Par conséquent, la "taxonomie" (la clé dans ce cas) ne peut avoir qu'une seule valeur. Si cela semble étrange, lisez cette page super utile sur le github du plugin qui m'a beaucoup aidé ( lisez ceci )

tldr; Les listes de termes et les tableaux multidimensionnels sont possibles avec WP API JSON! vous ne feriez que type[]=post_type1&type[]=post_type2 pour les types de publication personnalisés! L'essayer.

Donc, avec cela à l'esprit ... vous ne pouvez toujours pas faire une requête de taxonomie personnalisée multiple actuellement (pour autant que je sache). Bummer, je sais. Ma solution? Emboîtez votre deuxième requête dans le rappel de succès de la première, puis concaténez les tableaux et triez le tableau final.

$http.get(
  $scope.api + '/posts?type=eats&filter[taxonomy]=eats-categories&filter[term]=eats-video'
).
success(function(data, status, headers, config){
  $scope.posts = data;
    $http.get(
      $scope.api + '/posts?type=shreds&filter[taxonomy]=shreds-categories&filter[term]=shreds-video'
    ).
    success(function(data_2, status, headers, config){
      $scope.posts = $scope.posts.concat( data_2 );
    }).
    error(function(data_2, status, headers, config){
        alert( 'video 2 widget query error' );
    });     
}).
error(function(data, status, headers, config){
    alert( 'video widget query error' );
});  

Notez que ce code est spécifique à mes requêtes, mais je l’ai testé et cela a fonctionné. Je n'ai pas encore écrit la fonction de tri, mais je vais soit trier le champ de date WordPress des valeurs du tableau, soit utiliser un filtre angulaire pour faire quelque chose d'amusant.

Edit: fait quelques modifications pour plus de clarté.

1
DeNitto