obelix7 Δημοσιεύτηκε Απρίλιος 25, 2017 #1 Κοινοποίηση Δημοσιεύτηκε Απρίλιος 25, 2017 Γεια σας παιδιά Φτιάχνω ενα eshop με wordpress και woocommerce και έχω τραβήξει το xml απο κάποια εταιρεία για να ενσωματώνω αυτόματα τα προιόντα και τις διαθεσιμότητες. Είναι η πρωτη εταιρεία που αντί για διαθεσιμότητα σε αριθμό, το γράφει σαν HIGH, MEDIUM κτλ. Πως μπορώ να το εισάγω αυτό και να ελέγχει τις τιμές εγώ κανονίζοντας αν ειναι διαθέσιμο ή οχι; Ευχαριστώ προκαταβολικά Link to comment Share on other sites More sharing options...
nucleus Απρίλιος 25, 2017 #2 Κοινοποίηση Απρίλιος 25, 2017 Κοίτα στο documentation αν υπάρχει κάποια αντιστοίχιση ανάμεσα στο λεκτικό και σε κάποιο όριο τιμών πχ HIGH (> 5) , MEDIUM (1-3) κοκ. Μπορείς να κάνεις έλεγχο χρησιμοποιώντας το λεκτικό πχ if(Availability == "HIGH") κοκ. Κάποιο public λινκ για το documentation του API της εταιρείας? 1 Link to comment Share on other sites More sharing options...
obelix7 Απρίλιος 25, 2017 Author #3 Κοινοποίηση Απρίλιος 25, 2017 (edited) Δυστυχώς δεν έχω την δυνατότητα αυτή. μόνο το xml. Δεν με ενδιαφέρει τόσο να ορίσω τιμές. Απλά να του πω όσα είναι HIGH MEDIUM LOW, να είναι In stock ή οχι διαθέσιμο. Μπορείς να με βοηθήσεις με το if? αν δεν σου είναι κόπος πες μου ένα παράδειγμα και που το τοποθετώ. Ή αν υπάρχει καποιο λινκ με καποιο documentation παρόμοιο να του ρίξω μια ματιά για να μην σε κουράζω και αν το μελετήσω καλύτερα. Σε ευχαριστώ Έγινε επεξεργασία Απρίλιος 25, 2017 από obelix7 Link to comment Share on other sites More sharing options...
nucleus Απρίλιος 25, 2017 #4 Κοινοποίηση Απρίλιος 25, 2017 Είσαι σε development woocommerce ή κατευθείαν σε production? https://www.templatemonster.com/help/woocommerce-how-to-change-in-stock-out-of-stock-text-displayed-on-a-product-page.html#gref To παραπάνω link δείχνει πως να αλλάξεις το "In stock"/"Out of stock" κείμενο από το woocommerce. Θα ήθελα να δοκιμάσουμε κάτι αν και μόνο αν είσαι σε κάποιο development περιβάλλον. Ακολουθείς τα βήματα 1 και 2 από το παραπάνω link απλώς αντί να αντιγράψεις τον κώδικα που έχει στο βήμα 2 στο link αντιγράφεις το παρακάτω add_filter( 'woocommerce_get_availability', 'wcs_custom_get_availability', 1, 2); function wcs_custom_get_availability( $availability, $_product ) { $stock_status = $_product-> get_stock_status() ; $availability['availability'] = __($stock_status, 'woocommerce'); return $availability; } και μετά πήγαινε στην σελίδα ενός προιόντος από το xml αν δεν πετάξει κάποιο error και ανέβασε ένα screenshot. ΠΡΟΣΟΧΗ επειδή δεν ξέρω αν δουλεύει το παραπάνω δοκίμασε το σε development version και όχι σε production. Link to comment Share on other sites More sharing options...
obelix7 Απρίλιος 25, 2017 Author #5 Κοινοποίηση Απρίλιος 25, 2017 Πριν το δοκιμάσω, να κάνω μια ερώτηση. Αυτό δεν θα επηρεάσει τις ήδη υπάρχουσες καταχωρήσεις που δουλεύουν σωστα? Link to comment Share on other sites More sharing options...
nucleus Απρίλιος 25, 2017 #6 Κοινοποίηση Απρίλιος 25, 2017 Απλώς ορίζει ένα custom filter όταν καλεί το woocommerce το filter woocommerce_get_availability απλώς εκτελεί την "δικιά" μας συνάρτηση. Λογικά ναι επηρεάζει όλα τα προιόντα. Δεν ξέρω τι κάνεις τα προιόντα που διαβάζεις από το XML τα κάνεις insert σαν νέα προιόντα στο woocommerce? Τα χρησιμοποιείς με κάποιο άλλο τρόπο? Link to comment Share on other sites More sharing options...
obelix7 Απρίλιος 25, 2017 Author #7 Κοινοποίηση Απρίλιος 25, 2017 Τα βάζω σαν νεα προιοντα. όσα υπάρχουν ήδη βρισκονται απο το αναγνωριστικό και του έχω ορίσει τι να αναβαθμίζει, πχ διαθεσιμότητα, όσα δεν υπάρχουν σβήνονται και οσες ειναι καινούριες εγγραφες, γίνονται νεα προιόντα Δεν δουλευει. μου πετάει ενα error και δεν συνεχίζει καν στην φόρτωση της υπόλοιπης σελίδας Link to comment Share on other sites More sharing options...
nucleus Απρίλιος 25, 2017 #8 Κοινοποίηση Απρίλιος 25, 2017 Ωραία πήγαινε στο αρχείο που βάλαμε τον παραπάνω κώδικα και σβήστον save και μετά δες αν φορτώνει κανονικά την σελίδα του προιόντος. Αν πας στην σελίδα ενός προιόντος που διάβασε από το XML λέει κάτι πχ In stock, Out of stock για το availability? Link to comment Share on other sites More sharing options...
obelix7 Απρίλιος 25, 2017 Author #9 Κοινοποίηση Απρίλιος 25, 2017 Μμμ βασικά βρηκα αυτό http://stackoverflow.com/questions/38175713/additional-stock-options-in-woocommerce και με τις κατάλληλες τροποποιήσεις στις επιλογες που έχω, δείχνει να δουλευει με μια μικρή δοκιμή που έκανα. Βαζω την μεταβλητη availability απο το XML της εταιρείας στο χpath και μου ενφανίζει την επιλογή που θέλω. Αν βλέπεις κατι λάθος ενημέρωσε με. Ευχαριστώ πολύ Link to comment Share on other sites More sharing options...
nucleus Απρίλιος 25, 2017 #10 Κοινοποίηση Απρίλιος 25, 2017 (edited) Αφού φαίνεται να δουλεύει χρησιμοποίησε το. Απλώς σημείωσε κάπου τις αλλαγές που έκανες και σε ποιά αρχεία ώστε αν σε κάποιο μελλοντικό update του woocommerce σταματήσει να δουλεύει να μπορείς να το ξαναβάλεις. Δυστυχώς από woocommerce οι γνώσεις μου είναι περιορισμένες μέχρι ανύπαρκτες οπότε δεν μπόρεσα να βοηθήσω και πολύ. Προσωπικά χρησιμοποιώ nopcommerce και .NET. Έγινε επεξεργασία Απρίλιος 25, 2017 από nucleus Link to comment Share on other sites More sharing options...
obelix7 Απρίλιος 25, 2017 Author #11 Κοινοποίηση Απρίλιος 25, 2017 όπως και να χει σε ευχαριστώ πολύ 1 Link to comment Share on other sites More sharing options...
obelix7 Απρίλιος 25, 2017 Author #12 Κοινοποίηση Απρίλιος 25, 2017 UPDATE πρόσθεσα αυτό με τις κατάλληλες τροποποιήσεις function add_custom_stock_type() { ?> <script type="text/javascript"> jQuery(function(){ jQuery('._stock_status_field').not('.custom-stock-status').remove(); }); </script> <?php woocommerce_wp_select( array( 'id' => '_stock_status', 'wrapper_class' => 'hide_if_variable custom-stock-status', 'label' => __( 'Stock status', 'woocommerce' ), 'options' => array( 'instock' => __( 'In stock', 'woocommerce' ), 'LOW' => __( 'LOW', 'woocommerce' ), 'MEDIUM' => __( 'MEDIUM', 'woocommerce' ), 'HIGH' => __( 'HIGH', 'woocommerce' ), 'UNAV' => __( 'UNAV', 'woocommerce' ), 'outofstock' => __( 'Out of stock', 'woocommerce' ), 'onrequest' => __( 'On Request', 'woocommerce' ), // The new option !!! ), 'desc_tip' => true, 'description' => __( 'Controls whether or not the product is listed as "in stock" or "out of stock" on the frontend.', 'woocommerce' ) ) ); } add_action('woocommerce_product_options_stock_status', 'add_custom_stock_type'); function save_custom_stock_status( $product_id ) { update_post_meta( $product_id, '_stock_status', wc_clean( $_POST['_stock_status'] ) ); } add_action('woocommerce_process_product_meta', 'save_custom_stock_status',99,1); function woocommerce_get_custom_availability( $data, $product ) { switch( $product->stock_status ) { case 'instock': $data = array( 'availability' => __( 'Διαθέσιμο. Αποστολή σε 1-3 εργάσιμες', 'woocommerce' ), 'class' => 'in-stock' ); break; case 'HIGH': $data = array( 'availability' => __( 'Διαθέσιμο. Αποστολή σε 1-3 εργάσιμες', 'woocommerce' ), 'class' => 'in-stock' ); break; case 'LOW': $data = array( 'availability' => __( 'Διαθέσιμο. Αποστολή σε 1-3 εργάσιμες', 'woocommerce' ), 'class' => 'in-stock' ); break; case 'MEDIUM': $data = array( 'availability' => __( 'Διαθέσιμο. Αποστολή σε 1-3 εργάσιμες', 'woocommerce' ), 'class' => 'in-stock' ); break; case 'UNAV': $data = array( 'availability' => __( 'Μη διαθέσιμο', 'woocommerce' ), 'class' => 'out-of-stock' ); break; case 'outofstock': $data = array( 'availability' => __( 'Μη διαθέσιμο', 'woocommerce' ), 'class' => 'out-of-stock' ); break; case 'onrequest': $data = array( 'availability' => __( 'On request', 'woocommerce' ), 'class' => 'on-request' ); break; } return $data; } add_action('woocommerce_get_availability', 'woocommerce_get_custom_availability', 10, 2); το οποίο όμως ενώ δουλεύει άψογα βάζω την μεταβλητή availability στο xpath του stock-status, Μου έχει δημιουργήσει ενα πρόβλημα. Αυτό ειναι οτι μου κατήργησε την εικονίδιο προσθήκης στο καλάθι στα προϊόντα που είναι out of stock, ενώ έχω επιλεγμένο κανονικά το backorders Έχει κανείς καμιά ιδέα??? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now