我已经对这个主题进行了搜索,但无法找到涉及wordpress multisite的这个特定问题的解决方案。
我目前有一个wordpress网络,其中包含域。com是我们的主站点,然后每个站点都已使用国家/地区代码域和特定的国家/地区服务进行本地化。
例如:主域。com-澳大利亚域名。com。au-英国域名。co.uk等
在后端,它被设置为子目录、域。com,域。com/au等。
我想做的是在主站点上设置类别,例如:
画廊-澳大利亚-英国等
当我勾选“Australia”时,它会自动将子类别“Australia”中的所有帖子重新发布到配置/设置匹配类别中?
是否有此qeury的插件/解决方案?我读过很多文章,但都是针对单站点安装的。
最合适的回答,由SO网友:Pat J 整理而成
add_filter( \'the_posts\', \'wpse138563_add_posts\' );
function wpse138563_add_posts( $posts ) {
if( ! is_multisite() ) {
// if we\'re not using Multisite, bail
return;
}
if( is_main_site() ) {
// if we\'re in the root site, bail
return;
}
$country = get_bloginfo( \'name\' );
// This assumes that the categories in your main site
// have the same names as the country sites do
if( $query->is_main_query() ) {
// alter the main query
switch_to_blog( BLOG_ID_CURRENT_SITE );
$category = get_cat_ID( $country );
// get the posts with the appropriate category
$args = array(
\'category\' => $category,
);
$more_posts = get_posts( $args );
$posts = array_merge( $posts, $more_posts );
restore_current_blog();
}
return $posts;
}
未经测试。希望这能奏效,或者至少为您提供了一个起点。
Caveat: 根站点中的类别必须与子站点的站点名称同名,才能正常工作。也就是说,要在一个名为“澳大利亚”的网站上发布帖子,您的分类domain.com
必须命名为“澳大利亚”。
is_multisite()
switch_to_blog()
restore_current_blog()
the_posts
filter