web-dev-qa-db-fra.com

WP_Query sur un site différent dans une configuration multisite

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?

2
Sillzen

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

2
birgire