Post and Page Inheritance to subsites in a WordPress Network

I have to develop a multi-country, multi-lingual website. One country may have multiple languages. I have setup a WordPress Network and created subsites for each country like following. > Global Website > USA Website > France Website

I am detecting Countries through Geo Location API and forcefully redirect them to their own country’s website. Each country has their own set of languages e.g. France will have English and French with French as default language. I decided to use PolyLang for language translations. It works fine. > default french website > english translation of the french website.

The issue I am facing is I have duplicate english contents in every sub site. Is there anyway we can avoid duplicates and english version of subsites uses the english pages/posts from global site. Ideally, Admin should be able to select which one goes to sub site and which one does not.

There is an event section too, that can have global events as well as local/country level events.

I can think of following solutions and their drawbacks

  1. ThreeWP Broadcast plugin. This plugin broadcast page/posts to other sites on selection. Seems to be an excellent choice but duplicates the content what I am avoiding. Morover, I am not sure how it will work with PolyLang translations.

  2. Adding ‘template_redirect’ or ‘wp’ action, if subsite cant find a slug, and same slug is available in global site it should be populated and avoid 404. We also need to Intercept or override WP_Query calls to run same query on global site and return the results. About PolyLang, I am not sure how it will work. I guess, it can be sorted out. This approach is complicated and may end up no-where.

Anyone have any better solution? A plugin, or idea that can solve this interesting mystery?

I believe, its a common scenario for a multinational company. So, There has to be a viable solution to this.


R, the simple solution is to create a 2 post-meta.

The first is “Blog id”
The second is “Post id”

and you use

$blog_id = get_post_custom_values('blog_id');
$post_id = get_post_custom_values('post_id');

if( !empty( $blog_id ) )
switch_to_blog( $blog_id );
    $query = new WP_Query( array( 'p' => $post_id ));
    if( $query->have_posts() ){
        while( $query->have_post() ){



Leave a Comment