Forum Replies Created

Viewing 13 replies - 1 through 13 (of 13 total)
  • Thread Starter soylug

    (@soylug)

    solved first question

    Thread Starter soylug

    (@soylug)

    Thanks a lot, but finally I couldn’t get it working, so I gave up woocommerce. I set as resolved as you did solve my first question πŸ˜‰

    Thread Starter soylug

    (@soylug)

    Nice!
    I changed what you said and now i get “i’m here A with id: 564 i’m here B with id: 678 i’m at c” as answer, so I can continue working.
    Thanks a lot!!!

    Thread Starter soylug

    (@soylug)

    I’m still trying to solve this… I’m usin print_r as suggested and I get something I think is strange. For this piece of code:

    add_filter('woocommerce_get_checkout_url', 'pll_woocommerce_get_checkout_url');
      function pll_woocommerce_get_checkout_url(){
    	$checkout_page_id= woocommerce_get_page_id('checkout');
    	print_r("  i'm here A with id: ");
    	print_r($checkout_page_id);
    	$checkout_page_id_lan = pll_get_post ($checkout_page_id);
    	print_r("  i'm here B with id: ");
    	print_r($checkout_page_id_lan);
    	print_r ("  i'm at c");
    }

    I get “i’m here A with id: 564 i’m here B with id: i’m at c” as answer, so Polylang is not translating the id… should it work?

    Thread Starter soylug

    (@soylug)

    Thanks, but nothing changed… It works but without pll_get_post, so I always get the same language.
    Now I’m trying this:

    add_filter ('woocommerce_get_checkout_url', 'redirect_checkout_page_translated');
    function redirect_checkout_page_translated() {
    	if ( pll_current_language() == 'es'){
    		$url = 'http://www.xxxx'; //spanish link
    		}
    	else if ( pll_current_language() == 'en'){
    		$url = 'http://www.yyyy'; //english link
    		}
    	else{
    		$url = 'http://www.zzzz'; //other page
    	}
    	return $url;
      }

    I’ve tried all options (name, slug, locale) but doesn’t work. The las else is a default one because it seemed like pll_current_languge didn’t match options. Whith the code above, it always returns the default option (‘http://www.zzzz’). I have two languages, english and spanish, so I can’t understand what is pll_current_language function returning…
    I’m feeling silly and also becoming crazy πŸ™

    Thread Starter soylug

    (@soylug)

    I’m stuck with this πŸ™
    What I’m trying to do now is this:

    add_filter ('woocommerce_get_checkout_url', 'redirect_checkout_page_translated');
    function redirect_checkout_page_translated() {
    	$page_id = get_page_by_title('checkout');
    	$page_id_lan = pll_get_post ($page_id);
    	$url = get_permalink ($page_id_lan);
    	return $url;
      }

    but doesn’t work… If I don’t use pll_get_post, just this:

    add_filter ('woocommerce_get_checkout_url', 'redirect_checkout_page_translated');
    function redirect_checkout_page_translated() {
    	$page_id = get_page_by_title('checkout');
    	$url = get_permalink ($page_id);
    	return $url;
      }

    it redirects ok (I have try with several posts). I had understood that pll_get_post function works with ids, so it should work… or not?

    Thread Starter soylug

    (@soylug)

    When I say it doesn’t work, I mean that redirects to the same page but appears white (doesn’t load). If I comment the “add_filter(‘woocommerce_get_checkout_page_id’, ‘pll_get_post’);” it returns the page in the main language.
    There is a plugin to get woocommerce working with wpml and I downloaded it to have a look in case I can find out something I could use, and it uses this function in the filter (for cart page, for example):

    function translate_pages_in_settings($id) {
    		return icl_object_id($id, 'page', true);
    	}

    I saw on your web that this is as pll_get_post. But for checkout page, their function is this one:

    function get_checkout_page_url(){
            return get_permalink(icl_object_id(get_option('woocommerce_checkout_page_id'), 'page', true));
        }

    I’m telling this just in case you can see a solution
    Thanks a lot

    Thread Starter soylug

    (@soylug)

    Nop, that doesn’t work πŸ™
    It does for the cart page, but not for this one…

    Thread Starter soylug

    (@soylug)

    Thanks again!
    Here is the code for get_checkout_url:

    /**
    		 * Gets the url to the checkout page.
    		 *
    		 * @return string url to page
    		 */
    		public function get_checkout_url() {
    			$checkout_page_id = woocommerce_get_page_id('checkout');
    			$checkout_url     = '';
    			if ( $checkout_page_id ) {
    				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 );
    			}
    			return apply_filters( 'woocommerce_get_checkout_url', $checkout_url );
    		}

    I had already thought about sharing results (if I/we manage to get it working). As I said I’m not a programmer, so everything I try to change takes a lot of time for me πŸ™
    I also used it for nextgen plugin, which I guess is also interesting for more people. I’ll share, be sure πŸ˜‰

    Thread Starter soylug

    (@soylug)

    Hi again! Your advices were very useful and I have solved many things doing what you told me, but there is a page which I can’t get working and don’t know why!
    It’s again about woocommerce plugin, for a page already translated. Is the same that I first asked but this time there is something different that I suppose is what is messing things.

    // filter hook for include new pages inside the payment method
    $get_checkout_url = apply_filters( 'woocommerce_get_checkout_url', $woocommerce->cart->get_checkout_url() ); ?>
    
    <form name="checkout" method="post" class="checkout" action="<?php echo esc_url( $get_checkout_url ); ?>">

    I’ve already added a filter as you said:

    add_filter('woocommerce_get_checkout_url', 'pll_get_checkout_url');
    function pll_get_checkout_url($link) {
        return pll_get_post($link);
    }

    but doesn’t work, this time it returns main language page. Then, if I change language (clicking on the flag) I get the page in the language selected, so they are linked but filter isn’t working.
    Thanks for your help!

    Thread Starter soylug

    (@soylug)

    Just one more question (hope last one). NextGEN Gallery plugin can link galleries to pages. When calling the link, it allways return the same page in the same language although there is a translation for it. More or less is the same than before, but the calling is:
    pageid); ?>”>
    Can I do something similar?
    Thanks!

    Thread Starter soylug

    (@soylug)

    Perfect!! Thanks a lot!! I guess that I can do the same for other pages if I have the same issue.
    Thanks!! ^_^

    Thread Starter soylug

    (@soylug)

    First of all, thanks for your answer, nice support!
    This is what I could see:
    ‘cart_url’ => get_permalink( woocommerce_get_page_id( ‘cart’ ) )
    And the function is:
    ‘function woocommerce_get_page_id( $page ) {
    $page = apply_filters(‘woocommerce_get_’ . $page . ‘_page_id’, get_option(‘woocommerce_’ . $page . ‘_page_id’));
    return ( $page ) ? $page : -1;
    }
    }’
    Do you think it can be solved in an easy way? I’m sorry, I’m not a programmer πŸ™
    Thanks

Viewing 13 replies - 1 through 13 (of 13 total)