将类别重新发布到多站点博客的解决方案?

时间:2014-03-20 作者:Lilap

我已经对这个主题进行了搜索,但无法找到涉及wordpress multisite的这个特定问题的解决方案。

我目前有一个wordpress网络,其中包含域。com是我们的主站点,然后每个站点都已使用国家/地区代码域和特定的国家/地区服务进行本地化。

例如:主域。com-澳大利亚域名。com。au-英国域名。co.uk等

在后端,它被设置为子目录、域。com,域。com/au等。

我想做的是在主站点上设置类别,例如:

画廊-澳大利亚-英国等

当我勾选“Australia”时,它会自动将子类别“Australia”中的所有帖子重新发布到配置/设置匹配类别中?

是否有此qeury的插件/解决方案?我读过很多文章,但都是针对单站点安装的。

1 个回复
最合适的回答,由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_main_site()
  • is_multisite()
  • switch_to_blog()
  • restore_current_blog()
  • the_posts filter
  • 结束