Je veux aller chercher plusieurs articles avec des catégories et des tags. En fait, je crée une API pour mon site Wordpress, le code complet ressemble à ceci:
$mysql = mysqli_query($con,"SELECT p.post_title,
p.ID,
p.post_content,
p.post_date,
p.post_name as url,
t.name as category_name
FROM wp_posts p,
wp_terms t,
wp_term_relationships r,
wp_term_taxonomy tt
WHERE p.post_status='publish' AND
tt.taxonomy = 'post_tag' AND
p.id=r.object_id AND
r.term_taxonomy_id=tt.term_taxonomy_id AND
tt.term_id = t.term_id order by p.post_date desc limit ".(int)($pageNumber*$pageSize).",".(int)$pageSize."") or die ("error".mysqli_error($con));
$count = mysqli_num_rows($mysql);
La connexion MySQLi fonctionne. Mais lorsque je lance ce code, je ne reçois qu'une page vierge. Comment puis-je réparer cela?
WordPress a déjà une API que vous pouvez étendre et une classe pour interroger les publications!
Par exemple:
// when the rest_api_init action/event happens
add_action( 'rest_api_init', function () {
// register a new endpoint
register_rest_route( 'mohnish/v1', '/posts/', array(
'methods' => 'GET',
'callback' => 'mohnish_awesome_func', // that calls this function
) );
} );
// this is whats called when something hits the endpoint
function mohnish_awesome_func( WP_REST_Request $request ) {
// grab the parameters
$category = $request->get_param( 'category' );
$tag = $request->get_param( 'tag' );
// run the query to fetch the data
$q = new WP_Query( [
'category_name' => $category,
'tag' => $tag,
// etc...
]);
$results = []; // an empty array to hold our results
if ( $q->have_posts() ) {
while( $q->have_posts() ) {
$q->the_post();
// add a new result to the list
$results[] = [
'title' => get_the_title(),
// etc...
];
}
}
return $results; // the REST API will automagically convert this to json
}
Cela vous permettrait d'écrire des URL telles que:
https://example.com/wp-json/mohnish/v1/posts/?category=foo&tag=bar
Et récupérez une structure de données JSON avec des informations.
Heureusement, Core a déjà un noeud final de publications qui fait beaucoup de ce que vous voulez faire avec /wp-json/wp/v2/posts
, voici un exemple avec un site actif:
curl http://demo.wp-api.org/wp-json/wp/v2/posts
Vous pouvez voir un schéma complet de ce qu'il retourne ici avec des exemples sur la suppression d'une publication et la saisie de publications individuelles ici, ainsi que un manuel décrivant comment utiliser toutes ses fonctionnalités et l'étendre