Support » Plugin: Polylang » Make post available in all languages

  • Hello, I am using your plugin for a website with multiple languages and I need to make a post type be the only one for every language. Now, when I change the language on this custom post single page it redirects me to home because it cannot find that post in the changed language. Any ideas for me to try? Multiple languages is disabled for this post type.

    Permalinks: /%category%/%postname%/

    https://wordpress.org/plugins/polylang/

Viewing 15 replies - 1 through 15 (of 17 total)
  • Plugin Author Chouby

    (@chouby)

    Hi!

    This is how Polylang works. If there is a translation, then the language switcher links to the translation. If there is none, then it links to the home page. In the case of an untranslated post type, there is no translation, so the language switcher links to the home page.

    However, you can choose to “Hide languages with no translation” in the language switcher options.

    Ok, this I understand. But I haven’t assigned any language to this post or the post type in general. I need this post to be generally available for all languages. Isn’t there any way?

    I’m here for same request! I think it is a very interesting option to implement:
    Now I have about 250 posts in default language, I have to translate all posts before activate your plugin! This option allow me to post an article when each translation is ready!
    I wouldn’t want to show to a foreign visitor only a post today! 🙂

    Bonjour!
    Same request, too.
    Polylang is a fantastic piece of work and I understand this is the way it works, but it would be great if we had something like a neutral language or an option to disable languages for some content types, as it does with media.
    Any chances?

    looking for same feature 🙂

    FYI, there’s a longish thread that may be related.

    You can duplicate the posts and assign them to any language you want.
    I use the plugin “Post Duplicator” and it works.

    You can duplicate the posts and assign them to any language you want.

    Oh, this is not a good idea. These posts will all have a wrong language attribute.

    Some reading:

    http://www.w3.org/International/questions/qa-lang-why.en
    http://stackoverflow.com/questions/14649798/what-is-lang-attribute-of-the-html-tag-used-for

    On Use of the Lang Attribute

    @ecdltf : I know, but it’s the only way to achieve that result with Polylang now.

    Maybe I’m gonna try another solution:

    Instead of duplicating the whole post I’ll make just “stubs” for untranslated posts: The title in the original language, and as post content just a text like “This post is not (yet) translated. Click –here– to go to the English post”. (This can be done with a shortcode.)

    In conjunction with “noindex,nofollow” meta tags this should be OK.

    Anyone came up with a solution for this yet? I want all my posts available in all languages and only translate the categories.

    I have the same question.

    Same here, please advise on possible solution.

    Thanks in advance!

    Like everyone else I´ve been looking for a solution and thanks to the community I think I found a limited fix. My requirement was to allow a recent posts widget to show up default language posts for other language (posts not translated, selectable by category).
    In this other thread they point at syllogic blog where there is an example of a function to override the current language. It makes use of pre_get_posts to modify the main query but as I needed this to happen on a very specific query, this other thread in stackexchange give me the idea on how to implement it.

    I included it in functions.php modified like that:

    // PLUGIN TW Recent Posts Widget + OVERRIDE Polylang default language 
    // tell WordPress about our new query var
    function wpse52480_query_vars( $query_vars ){
        $query_vars[] = 'default_lang_query';
        return $query_vars;
    }
    add_filter( 'query_vars', 'wpse52480_query_vars' );
    
    // check if our query var is set in any query
    function wpse52480_pre_get_posts( $query ){
    	if( !is_admin() && isset( $query->query_vars['default_lang_query'] ) ) {
          if ( function_exists('pll_default_language') ){ 
    	     $terms = get_terms('post_translations'); //polylang stores translated post IDs in a serialized array in the description field of this custom taxonomy
    	     $defLang =  pll_default_language(); //default lanuage of the blog
    	     $curLang =  pll_current_language(); //current selected language requested on the broswer
    	     $filterPostIDs = array();
    	     foreach($terms as $translation){
    	       $transPost = unserialize($translation->description);
    	       //if the current language is not the default, lets pick up the default language post
    	       if($defLang!=$curLang) $filterPostIDs[]=$transPost[$defLang];
    	     }
    	     if($defLang!=$curLang){
    	       $query->set('lang' , $defLang.','.$curLang);  //select both default and current language post
    	       $query->set('post__not_in', $filterPostIDs); // remove the duplicate post in the default language
    	     }
       }  
    }
       return $query;
    } 
    
    add_action( 'pre_get_posts', 'wpse52480_pre_get_posts' );

    Then I made a modification in the code of the plugin TW Recent Posts (it´s simple and handy) to modify wp_query. At line 154 in tw-recent-posts-widget.php change it like:

    $args = array(
        'default_lang_query' => true,
        'cat' => $category,
        'posts_per_page' => $count,
        'orderby' => $orderby,
        'order' => $order,
        'nopagging' => true
    );
    
    $wp_query= new WP_Query( $args );

    This now allows this widget to pick up posts in the default language even if we are on a translated one. The function can be used in php templates to extend its use.

    anyone have a solution for this? i too need this option as if we dont have translations for all pages, we must have an option to load the original post/page for any/all languages

Viewing 15 replies - 1 through 15 (of 17 total)
  • The topic ‘Make post available in all languages’ is closed to new replies.