• So I’m using Jigoshop and Polylang together. Recently, I got this problem :

    When I create a new product in the english section, the permalink is
    /produit/product-name

    And when I create a product in the french section, the permalink is /product/product-name

    I know that I can change the whole permalink with this extension : https://ww.wp.xz.cn/plugins/custom-permalinks/
    but the other problem is when I insert a Jigoshop shortcode to show a product:

    When I add a shortcode to show a specific product, it goes to to good url which is not the same as the product.

    Anyways to resolve this?

    Thanks in advance

    https://ww.wp.xz.cn/plugins/jigoshop/

Viewing 8 replies - 1 through 8 (of 8 total)
  • Hi, I have the same problem, did you find a solution for this? I’ve looked on Polylang section and I couldn’t find anything useful.

    Thread Starter popotvin

    (@popotvin)

    No sorry. I even tried to reinstall both extension and delete the tables in phpmyadmin but nothing worked 🙁

    Hi popotvin and Mihai_i,

    I checked this extension and I did not experience any issue with permalinks.

    Thread Starter popotvin

    (@popotvin)

    Do you think it could be a past installation of a similar extension that could cause this? Like Woocommerce would intefere in the database?

    Hi, I used it on a fresh install, in wp-config, WPLANG is set to de_DE, in admin, polylang is set to de_DE.

    I have the same problem with polylang activated (in a non en language) the link of the product image says …/product/.. and it should be …/producto/… (in case of ES language for example).

    The same happends with the link (image and text) at the cart section.

    If I deactivate polylang it works.

    Well I have developed a runtime patcher to avoid this problem. It is not a solution, just a patcher.

    1.- This code enqueues the script, append it to de jigoshop_actions.php

    function my_scripts() {
    echo '<!--'.JIGOSHOP_URL.'-->' ;
            wp_register_script( 'my_script', JIGOSHOP_URL . '/js/my_script.js', array(), '1.0.0', false );
            wp_enqueue_script( 'my_script' ) ;
    }
    
    add_action( 'wp_enqueue_scripts', 'my_scripts' );

    2.- This is my_script.js (the patcher) copy it to (a new) js directory into jigoshop plugin directory

    /*
    - - - - - - - - - - - - - - - -
    
    RUNTIME PATCH FOR WordPress Jigoshop + Polylang
    
    - - - - - - - -- - - - - - - - -
    
    Objetives: A script that changes at runtime the link value of product's image from .../product/... to .../producto/... (case for ES other languages change v_replace value). Changes occur for shop page and cart page.
    
    */
    
    var v_target  = 'product' ;
    var v_replace = 'producto' ;
    var v_string  = '' ;
    
    function f_rtpatch_shop() {
    console.log('RUNTIME PATCH for Jigoshop + Polylang  |  shop') ;
    v_lookup = document.getElementsByClassName("products")[0].childNodes ;
    
    for (i = 1; i < v_lookup.length; i=i+2) {
        v_string = v_lookup[i].childNodes[1].href ;
        v_string = v_string.replace(v_target,v_replace) ;
        v_lookup[i].childNodes[1].href = v_string ;
       //console.log(v_lookup[i].childNodes[1].href)
                                            }
    
                                } ;
    
    function f_rtpatch_cart() {
    console.log('RUNTIME PATCH for Jigoshop + Polylang  |  cart') ;
    v_lookup = v_lookup = document.getElementsByClassName("shop_table cart")[0].getElementsByTagName("tbody")[0].getElementsByTagName("tr") ;
    
    for (i = 0; i < v_lookup.length; i++) {
        k=[3,5] ; for (j in k) {
        v_string = v_lookup[i].childNodes[k[j]].childNodes[1].href ;
        v_string = v_string.replace(v_target,v_replace) ;
        v_lookup[i].childNodes[k[j]].childNodes[1].href = v_string ;
        //console.log(v_lookup[i].childNodes[k[j]].childNodes[1].href)
                               }
                                            }
                              } ;
    
    window.onload = function() {
    var v_switch = window.location.pathname ;
    switch(v_switch) {
        case "/shop/" : f_rtpatch_shop() ; break ;
        case "/cart/" : f_rtpatch_cart()
                                    }
                                }

    Well this is the final version of the patcher it patches shop, cart product detail pages.

    Making Jigoshop work with polylang
    ———————————-

    Jigoshop :
    Ensure that automatic plugging generated pages (Cart, Checkout etc.) had no defined language, including the Shop manually created page and configured in Jigoshop. To do it, simply add a new language to polylang, mark those pages with it, and then delete the language.

    Then do no use the Shop page as the trick is to generate one product per language (with the same SKU number) and asign each a language category then the ‘Shop’ page will be a custom link in the menu to /?product_cat=language_category (e.g. en es fr etc.) this way you have one different link per language.
    Menu for shop (category language) menu = http://myweb.com/?product_cat=%5Blangcat%5D

    Polylang :
    Settings | Languages (polylang settings) | Settings
    URL Modifications: set language by content and delete /language/ from custom permalinks
    Mark all Custom taxonomies and Sync.

    General:
    WP Settings | Permalinks: by default
    (works 100% with no need of js runtime patching)

    WP Settings | Permalinks: by name of the entry -> requires patch see below
    (Need of language pack)

    1.- This code enqueues the script, append it to de jigoshop_actions.php

    /*
    
    Cargador del script en el plugin Jigoshop
    Script loader for Jigoshop plugin
    
    (C) FHP Agosto 2015
    
    Añadir al final del fichero jigoshop_actions.php y crear el directorio js y copiar ahí el script my_script.js:
    Add this file at the end of jigoshop_actions.php create a js/ directory an copy there my_script.js:
    
    */
    
    /**
     * Proper way to enqueue scripts and styles
     */
    function my_scripts() {
    #       wp_register_style( 'style-name', get_stylesheet_uri(). '/css/custom-style.css'););
    #       wp_enqueue_style( 'style-name' ) ;
    
    #        wp_enqueue_script( 'my_script', get_template_directory_uri() . '/js/my_script.js', array(), '1.0.0', false );
    
    //echo '<!--'.JIGOSHOP_URL.'-->' ;
            wp_register_script( 'my_script', JIGOSHOP_URL . '/js/my_script.js', array(), '1.0.0', false );
            wp_enqueue_script( 'my_script' ) ;
    }
    
    add_action( 'wp_enqueue_scripts', 'my_scripts' );

    2.- This is my_script.js (the patcher) copy it to (a new) js directory into jigoshop plugin directory

    /*
    - - - - - - - - - - - - - - - -
    
    RUNTIME PATCH FOR WordPress Jigoshop + Polylang
    
    - - - - - - - -- - - - - - - - -
    
    Objetivo: Un script que cambia en tiempo de ejecución el enlace de la imagen del producto de .../product/... a .../producto/...
    
    Objective: A runtime script that changes broken links using Jigoshop & Polylang and wp entry name permalinks
    
    */
    
    var v_target  = 'product' ;
    var v_replace = 'producto' ; // here your wordpress default language translation to 'product'
    var v_string  = '' ;
    var v_lookup = new Object() ;
    
    function f_rtpatch_shop() {
    v_lookup = document.getElementsByClassName("products")[0].childNodes ;
    for (i = 1; i < v_lookup.length; i=i+2) {
        v_string = v_lookup[i].childNodes[1].href ;
        v_string = v_string.replace(v_target,v_replace) ;
        v_lookup[i].childNodes[1].href = v_string ;
    //    console.log(v_lookup[i].childNodes[1].href)
                                            }
                                } ;
    
    function f_rtpatch_producto() {
    v_lookup = document.getElementsByClassName("products")[1].childNodes ;
    for (i = 1; i < v_lookup.length; i=i+2) {
        v_string = v_lookup[i].childNodes[1].href ;
        v_string = v_string.replace(v_target,v_replace) ;
        v_lookup[i].childNodes[1].href = v_string ;
    //    console.log(v_lookup[i].childNodes[1].href)
                                            }
                                } ;
    
    function f_rtpatch_cart() {
    v_lookup = document.getElementsByClassName("shop_table cart")[0].getElementsByTagName("tbody")[0].getElementsByTagName("tr") ;
    for (i = 0; i < v_lookup.length; i++) {
        k=[3,5] ; for (j in k) {
        v_string = v_lookup[i].childNodes[k[j]].childNodes[1].href ;
        v_string = v_string.replace(v_target,v_replace) ;
        v_lookup[i].childNodes[k[j]].childNodes[1].href = v_string ;
    //    console.log(v_lookup[i].childNodes[k[j]].childNodes[1].href)
                               }
                                            };
    
                              } ;
    
    window.onload = function() {
    var v_switch = window.location.pathname ;
    var v_pattern = /^\/[^\/]*\/{0,1}/ ;
    if (v_switch.length > 1) { v_switch = v_pattern.exec(v_switch).toString(); };
    switch(v_switch) {
    	case "/":			f_rtpatch_shop() ; break ;
        case "/"+v_replace+"/":	f_rtpatch_producto() ; break ;
        case "/cart/":		f_rtpatch_cart() ; break ;
                     } ;
                               } ;
Viewing 8 replies - 1 through 8 (of 8 total)

The topic ‘Product permalink is wrong with Polylang’ is closed to new replies.