WordPress.org

Ready to get started?Download WordPress

Forums

Polylang
[resolved] Both languages in homepage (9 posts)

  1. panos76
    Member
    Posted 8 months ago #

    Hi,
    I had the same problem in the past, but I fixed it with some addition in the code of my theme. Now, after the last upgrade of Polylang, the problem is back. Any idea how to fix it please? Here is the code:

    if ( is_home() ){
    		$args = array(
    			'showposts'=> (int) get_option('notebook_homepage_posts'),
    			'paged'=>$paged,
    			'post_type' => 'post',
    			'lang' => get_query_var('lang'),
    			'category__not_in' => (array) get_option('notebook_exlcats_recent'),
    		);
    		if ( 'false' == get_option('notebook_duplicate') ){
    			$args['post__not_in'] = $ids;
    		}
    		query_posts( apply_filters( 'notebook_homepage_args', $args ) );
    	}

    [Moderator Note: Please post code & markup between backticks or use the code button. Your posted code may now have been permanently damaged by the forum's parser.]

    http://wordpress.org/plugins/polylang/

  2. Chouby
    Member
    Plugin Author

    Posted 8 months ago #

    Could you tell me if it works with the current development version (1.2.3.4). I fixed a bug which may impacted you.
    http://downloads.wordpress.org/plugin/polylang.zip

  3. panos76
    Member
    Posted 8 months ago #

    Yes! Everything is ok now, thanks!!!

  4. panos76
    Member
    Posted 8 months ago #

    Hi,
    I updated to 1.3 and I have again the same problem!

  5. Chouby
    Member
    Plugin Author

    Posted 8 months ago #

    As performance optimization, Polylang does not set anymore the 'lang' query var but does set directly the tax_query. That saves 1 query (that WP does not cache !). On my own site, I saved 3 queries on home page :)

    Try this code which should be better:

    if ( is_home() ){
    		$args = array(
    			'showposts'=> (int) get_option('notebook_homepage_posts'),
    			'paged'=>$paged,
    			'post_type' => 'post',
    //			'lang' => get_query_var('lang'),
    			'category__not_in' => (array) get_option('notebook_exlcats_recent'),
    		);
    		if ( 'false' == get_option('notebook_duplicate') ){
    			$args['post__not_in'] = $ids;
    		}
    
    		$args = array_merge($GLOBALS['wp_query'], $args);
    
    		query_posts( apply_filters( 'notebook_homepage_args', $args ) );
    	}
  6. panos76
    Member
    Posted 8 months ago #

    It works, thank you!

  7. ReactorShop
    Member
    Posted 8 months ago #

    Hi Chouby. I just updated to PL 1.3 and the issue I have might be related to this.

    I already had this issue before, during 1.2 Beta testing

    Please check the images from the first post in this topic:

    http://wordpress.org/support/topic/polylang-12-beta-is-ready-for-tests/page/3?replies=82

    I remember your correction was fast.

    Thank you in advance!

  8. Chouby
    Member
    Plugin Author

    Posted 8 months ago #

    No that's a totally different issue. Unfortunately, I can't go back to the previous version. What works for WP-Ecommerce is in fact buggy and creates conflicts for other users with more generic needs. That's why I modified the code again...

    So you will have to introduce a specific code for WP-Ecommerce in a custom plugin. This should work for the products page:

    <?php
    /*
    Plugin name: Polylang WP E-Commerce Compatibility
    */
    
    if (function_exists('pll_get_post')) // test a Polylang function to avoid ugly fatal error at Polylang upgrade
    	add_action('parse_query', 'pll_wpsc_parse_query');
    
    function pll_wpsc_parse_query($query) {
    	if (is_page( pll_get_post(wpsc_get_the_post_id_by_shortcode( '[productspage]' ) ))) {
    		global $polylang;
    		$polylang->choose_lang->set_lang_query_var($query, $polylang->curlang);
    	}
    }
  9. ReactorShop
    Member
    Posted 8 months ago #

    Hi, Chouby.

    The WP e-Commerce developer community is evaluating replacing the short code approach to detect their CPT pages, in favor of using the CPT pages' page_name slugs. That would require to fix the WPML interfacing plugin too.

    The change of behavior I described is really difficult to track for me, because I would reach the end of the parse_query filter with all the wpsc-product CPT posts in all languages selected, without knowing what didn't happened which would select the current language posts to be shown on this CPT page only. That's why I had to ask.

    I'll add this to my Polylang/WP e-Commerce plugin to test later on. I'm currently hooked to the wpsc_get_the_post_id_by_shortcode filter hook, switching the CPT pages post ID using pll_get_post to send the translated post ID, so I think that I have to enter it like this:

    <?php
    /*
    Plugin name: Polylang WP E-Commerce Compatibility
    */
    
    if (function_exists('pll_get_post')) // test a Polylang function to avoid ugly fatal error at Polylang upgrade
    	add_action('parse_query', 'pll_wpsc_parse_query');
    
    function pll_wpsc_parse_query($query) {
    	if (is_page( wpsc_get_the_post_id_by_shortcode( '[productspage]' ) )) {
    		global $polylang;
    		$polylang->choose_lang->set_lang_query_var($query, $polylang->curlang);
    	}
    }

    Thank you, Chouby.

Reply

You must log in to post.

About this Plugin

About this Topic

Tags

No tags yet.