多站点设置中不同站点上的WP_QUERY

时间:2018-09-03 作者:Sillzen

我正在尝试从一个多站点站点(“Staffsite”)检索搜索结果-id:2) 并将其与另一个属于多站点设置(“旗舰”)的站点上的搜索结果一起显示(“旗舰”-id:1). 我目前在中有以下代码search.php 旗舰上:

$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
当在Staffsite上的模板中使用查询时,查询会按预期工作(替换get_search_query() 使用实际值),返回所有相关帖子,但从Flagship上的模板结合使用时不起作用switch_to_blog().

为什么这不起作用?

1 个回复
SO网友:birgire

另一种选择是使用Rest API:

Example (post):

在帖子中搜索Jane Doe:

https://example.com/staffsite/wp-json/wp/v2/posts/?search=jane+doe

Example (custom post types):

如果公共和可搜索的自定义帖子类型(例如。staff) 有show_in_rest 设置为true 然后,我们可以在员工岗位上搜索Jane Doe:

https://example.com/staffsite/wp-json/wp/v2/staff/?search=jane+doe
ps:有些相关,如果您想使用网络中多个站点的数据创建自己的路由:WP REST API - Multisite - get posts from all sites

结束

相关推荐

使用WP MultiSite在htaccess文件中为不同的域创建重写规则

通常,如果您有一个WordPress网站,那么在.htaccess 您的域的文件。例如,如果您的域是DomainA。com,您有以下重写规则:RewriteRule ^i-like-([a-zA-Z0-9-]+)/$ wp-content/themes/customtheme/custom-pages/ilike.php?like=$1 [L] 你将获得域名。com/i-like-。。。但如果我有一个包含以下域的多站点,该怎么办:域名。com(主域)域B。com(映射域)域C。com(映射域),