J'essaie de récupérer les résultats de recherche d'un site multi-sites ("Staffsite" - id: 2
) et de les afficher avec les résultats de la recherche sur un autre site faisant partie de la configuration multi-site ("Flagship" - id: 1
). J'ai actuellement le code suivant dans search.php
sur Flagship:
$args = array(
'post_type' => 'staff',
's' => get_search_query(),
);
switch_to_blog( 2 ); // switch to Staffsite
$staffsite_query = new WP_Query( $args );
var_dump( $staffsite_query->post_count ); // 0
// Do something with post data
restore_current_blog(); // return to Flagship
La requête fonctionne comme prévu lorsqu'elle est utilisée dans un modèle sur Staffsite (remplaçant get_search_query()
par une valeur réelle), renvoyant tous les articles pertinents, mais ne fonctionne pas lorsqu'elle est utilisée à partir d'un modèle sur Flagship en combinaison avec switch_to_blog()
.
Pour quelle raison cela ne fonctionne pas?
L’option alternative pourrait utiliser l’API Rest :
Exemple (post):
Rechercher Jane Doe dans les messages:
https://example.com/staffsite/wp-json/wp/v2/posts/?search=jane+doe
Exemple (types d'articles personnalisés):
Si le public _ et interrogeable type de publication personnalisé (par exemple, staff
) a show_in_rest
défini sur true
, nous pouvons rechercher Jane Doe dans les publications du personnel:
https://example.com/staffsite/wp-json/wp/v2/staff/?search=jane+doe
ps: un peu lié, si vous voulez créer votre propre itinéraire, en utilisant les données de plusieurs sites du réseau: WP REST API - Multisite - permet d’envoyer des articles de tous les sites