Support » Plugin: WooCommerce » woocommerce checkout and cart in second languages

  • LouiseFerm

    (@louiseferm)


    Hi,

    Im having issues with the layout of checkout and cart in second languages of woocommerce. Im using polylang plugin for translation. The layout breaks in second languages in these two pages. Also when on the second languages of the site and going to checkout it redirects to english version.

    Kind regards
    Louise

    https://wordpress.org/plugins/woocommerce/

Viewing 3 replies - 1 through 3 (of 3 total)
  • perryborst

    (@perryborst)

    He Louise,

    I’m stuck as well, but a little further then you i guess. I’ve been working on a woocommerce and polylang install for a few weeks, just before my holiday i stumbled upon the same issue. I’ve rewritten some functions and was about to make a plugin when i noticed “darkog” allready made one: https://github.com/gdarko/Woocommerce-Polylang-Integration

    The idea is simple, polylang provides a nice API to get the page in the right language, darkog uses that to get the correct cart and checkout page.

    My next problem is that on the english checkout page i’m missing the shipping options and the calculation for “Order Total” is always 0.00.

    http://www.sjaaals.nl/?product_cat=rembrandt-van-rijn-en choose a product and click order. Redirection to cart goes correct, but when going to checkout the page is incomplete (compare with the dutch version)

    Hope there is somebody out there who has solved this.

    All the best,
    Perry

    Thread Starter LouiseFerm

    (@louiseferm)

    Hi Perry,

    Have you tried the plugin woocommerce-polylang-integration?

    perryborst

    (@perryborst)

    He Louise,

    Yes i tried it, but it didn’t work as expected, so i ended up rewriting woocommerce myself. Looking at his plugin, it should work, but somehow it didn’t return any url…

    What i did in the end was overrule a few functions and added the id’s hardcoded as i was running out of time to complete the project.

    The checkout page needs some javascript in order to work, so the function to check if the checkout page is active needs to be altered.

    includes wc-conditional-functions.php

    function is_checkout() {
    
    		$result = false;
    
    		if(is_page(52) || is_page(125)){
    			$result = true;
    		}
    		return $result;
    		//return is_page( wc_get_page_id( 'checkout' ) ) ? true : false;
    	}

    Also, to get the correct url for the checkout or cart page two functions need to be altered.

    includes/class-wc-cart.php

    public function get_cart_url() {
    
    			$cart_page_id = wc_get_page_id( 'cart' );
    
    				//we need to know the language
    				$curLang = get_locale();
    				//echo "lang: ".$curLang."<br />";
    
    				/*
    				//now get the correct post
    				$daPost = pll_get_post($page_id, $curLang);
    				//echo $daPost."<br />";
    
    				if($daPost){
    					$page_id = $daPost;
    				}
    				*/
    
    				$permalink = get_permalink( $cart_page_id );
    
    				if($curLang == 'en_US'){
    					 $cart_page_id == 118;
    
    					 $permalink = str_replace("51", "118", $permalink);
    
    				}
    
    			//return apply_filters( 'woocommerce_get_cart_url', $cart_page_id ? get_permalink( $cart_page_id ) : '' );
    			return apply_filters( 'woocommerce_get_cart_url', $permalink );
    		}
    public function get_checkout_url() {
    			$checkout_page_id = wc_get_page_id( 'checkout' );
    			$checkout_url     = '';
    			if ( $checkout_page_id ) {
    
    				//we need to know the language
    				$curLang = get_locale();
    				//echo "lang: ".$curLang."<br />";
    
    				/*
    				if($curLang == 'en_US'){
    					 $checkout_page_id == 125;
    				}
    				*/
    
    				if ( is_ssl() || get_option('woocommerce_force_ssl_checkout') == 'yes' ) {
    					$checkout_url = str_replace( 'http:', 'https:', get_permalink( $checkout_page_id ) );
    				} else {
    					$checkout_url = get_permalink( $checkout_page_id );
    				}
    
    				if($curLang == 'en_US'){
    					 $checkout_url = str_replace("52", "125", $checkout_url);
    				}
    
    			}
    			return apply_filters( 'woocommerce_get_checkout_url', $checkout_url );
    		}

    Hope this will help!

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘woocommerce checkout and cart in second languages’ is closed to new replies.