My Blog
WPML Εμφάνιση μη μεταφρασμένων προϊόντων σε μεταφρασμένες κατηγορίες ή μετάφραση χωρίς διπλότυπα
Γεια σας, το συγκεκριμένο θέμα αποτελεί σοβαρό πρόβλημα για πολλά e-shop αλλά και απλά site ή blogs που χρησιμοποιούν το WPML.
Αν το μόνο που θέλετε είναι να μεταφράσετε τον τίτλο του προϊόντος σας και τους τίτλους των κατηγοριών, υπάρχει το εξής trick:
Προαπαιτούμενα: Πρόσθετα και γνώσεις για αυτά: WPML, WPML Translation Management, Elementor Pro, Woolentor for Elementor, WP All Import ή ACF, My Custom Functions ή να γνωρίζετε πως να προσθέσετε ένα function στο θέμα σας.
Πάμε:
Πρώτα απ' όλα φτιάξτε με το Elementor pro, δύο ξεχαριστά template σελίδας καταστήματος και δύο ξεχωριστά template σελίδας προϊόντος (single product)
Το κάθε ένα template αντιπροσωπεύει μια γλώσσα. Τώρα σας λέω για δύο δεδομένου ότι συνήθως θέλουμε ένα για Ελληνικά και ένα για Αγγλικά.
Για πιο πολλές από δύο, θα χρειαστεί επιπλέον δουλειά. Ρωτήστε με αν θέλετε για πιο πολλές.
Πάμε τώρα στο Ελληνικό template:
Στο ελληνικό template προσθέστε ένα Products Archive Layout (custom) element από το Woolentor πρόσθετο του Elementor με Universal Style στα Layout settings. Από εκεί και πέρα το πως θα φαίνεται, ρυθμίστε το όπως θέλετε το design.
Στο αγγλικό template προσθέστε επίσης ένα Products Archive Layout (custom) element από το Woolentor πρόσθετο του Elementor, αλλά αυτή την φορά στο Layout settings επιλέξτε το Current Theme Style (με δεδομένο ότι το θέμα σας χρησιμοποιεί για την εμφάνιση των προϊόντων του Woocommerce, το template του Woocommerce. Αν χρησιμοποιεί κάτι άλλο τότε στο αγγλικό template μην βάλετε το woolentor products archive layout (custom), αλλά από τα κλασικά woocommerce elements του Elementor pro επιλέξτε και βάλτε το κλασικό archives layout για προϊόντα, του woocommerce).
Αφού αποθηκεύσετε λοιπόν τα δυο template σας, τώρα όταν επισκέπτεστε την σελίδα καταστήματος, θα πρέπει να εμφανίζονται με διαφορετικό design στα ελληνικά και διαφορετικό στα αγγλικά. Ας έχουν ακόμα ελληνικούς τίλτους, δεν τρέχει κάτι.
Πάμε τώρα στο επόμενο στάδιο.
Πρέπει τους αγγλικούς τίτλους να τους περάσετε σε κάθε προϊόν σε ένα νέο custom field, είτε ένα προς ένα με το πρόσθετο ACF, είτε μαζικά μέσω excel με το πρόσθετο WP All Import (θα δείτε την επιλογή για νέο custom field μέσα). Φαντάζομαι ότι γνωρίζετε πως να το κάνετε. Αν όχι ρωτήστε με και θα σας δείξω σε ένα βιντεάκι στο Youtube. Πληροφοριακά μόνο, τα custom fields χρησιμοποιούνται όταν θέλουμε να βάλουμε επιπλέον πληροφορίες σε ένα προϊόν ή μία ανάρτηση κλπ, πχ να βάλουμε barcode στο προϊόν κ.α.
Το custom field πρέπει να έχει το όνομα "description" και τα δεδομένα του custom field να είναι η αγγλική ονομασία του προϊόντος.
Τώρα ας υποθέσουμε ότι το φτιάξατε για όλα σας τα προϊόντα. Η επόμενη κίνηση είναι να προσθέσετε την ακόλουθη συνάρτηση (function) στο θέμα σας, είτε κάνωντας επεξεργασία το functions.php είτε με το πρόσθτετο "My custom functions":
//antikatastash titlou by NicolasLagios.com if ( ! function_exists( 'woocommerce_template_loop_product_title' ) ) { function woocommerce_template_loop_product_title() { echo '<h4 class="woocommerce-loop-product__title">' . get_post_meta( get_the_ID(), 'perigrafh', true ) . '</h4>'; } }
Τώρα εφόσον βάλατε το function και εφόσον σιγουρέψετε ότι έχει ενεργοποιηθεί το My custom functions (αν χρησιμοποιήσατε αυτό), πηγαίνετε στο κατάστημά σας, στην αγγλική γλώσσα του καταστήματος και θα δείτε ότι πλέον για τίτλο το woocommerce χρησιμοποιεί το custom field "description" που προσθέσαμε πριν στα προϊόντα και εμφανίζει τους αγγλικούς τίτλους. Καλό???
Τώρα, τι γίνεται με τις κατηγορίες:
Αν κάνετε μετάφραση των κατηγοριών θα δείτε ότι η κεντρική σελίδα καταστήματος (τα templates που φτιάξαμε πριν με το Elementor) δουλεύει κανονικά και στις δύο γλώσσες. Αν όμως πατήσετε σε μια αγγλική κατηγορία (εφόσον έχετε μεταφράσει τις κατηγορίες και φροντίσατε στην αγγλική σελίδα καταστήματος να δείχνει widget το οποίο δείχνει τις αγγλικές κατηγορίες), θα δείτε ότι εμφανίζει κενό, δεν εμφανίζει κανένα προϊόν και αυτό γιατί το WPML πιστεύει ότι δεν τα έχετε μεταφράσει και ακόμα και αν στις ρυθμίσεις του WPML επιλέξετε να εμφανίζει τα μη μεταφρασμένα προϊόντα, αυτό δεν θα δουλέψει όταν επισκέπτεστε μια μεταφρασμένη κατηγορία.
Πως γίνεται λοιπόν να εμφανίσουμε τα μη μεταφρασμένα προϊόντα σε μια μεταφρασμένη κατηγορία???
Μα φυσικά χρησιμοποιώντας αντί για μεταφρασμένη κατηγορία, μή μεταφρασμένες στην θέση τους.
Πάμε λοιπόν και διαγράφουμε όλες τις μεταφρασμένες κατηγορίες και αφήνουμε μόνο τις κατηγορίες στην αγγλική γλώσσα.
Πάμε στις ρυθμίσεις του WPML (/wp-admin/admin.php?page=wpml-translation-management/menu/settings) και ρυθμίζουμε να μην είναι μεταφράσιμες οι κατηγορίες των προϊόντων και επίσης μη μεταφρασμένα προϊόντα να εμφανίζονται.
Πάμε αμέσως μετά και φτιάχνουμε ένα μενου (/wp-admin/nav-menus.php) και μέσα θα βάλουμε στοιχεία (συνδέσμους) με όλες τις κατηγορίες προϊόντων όπου κάθε στοιχείο (σύνδεσμος) θα οδηγεί σε μια ελληνική κατηγορία με την διαφορά ότι στο τέλος του συνδέσμου, θα προσθέσουμε το "?lang=en", πχ "/product-category/επιπλα/πολυθρονα-επιπλα/?lang=en". Φυσικά ως όνομα του κάθε στοιχείου θα βάλουμε την αγγλική ονομασία.
Πάμε τώρα ξανά στο elementor και φτιάχνουμε δυο ακόμα πρότυπα (ένα Ελληνικό και ένα Αγγλικό) για τα Search Results (αποτελέσματα αναζήτησης). Φροντίζουμε και σε αυτά τα δύο πρότυπα να κάνουμε το ίδιο που κάναμε με το Woolentor προσθετο του elementor.
Πάμε τώρα στις μικροεφαρμογές και προσθέτουμε στην πλευρική μπάρα του eshop αντί για τις κλασικές κατηγορίες προϊόντων, να εμφανίζει το μενού που φτιάξαμε.
Θα δείτε τώρα πως αν επισκεφθείτε μια ελληνική κατηγορία, βάζωντας το "?lang=en" στο τέλος, εμφανίζει κανονικά τα προϊόντα μεταφρασμένα.
Τέλος διαδικασίας.
Ευχαριστώ και sorry για το fast άρθρο. Θα φροντίσω να το συμμαζέψω λίγο και να φτιάξω ένα βίντεο κάποια στιγμή, με την διαδικασία.
Με εκτίμηση Νίκος..
This post is also available in: English