Jump to content



Manage stock απο κείμενο στο woocommerce


obelix7

Recommended Posts

Γεια σας παιδιά

Φτιάχνω ενα eshop με wordpress και woocommerce και έχω τραβήξει το xml απο κάποια εταιρεία για να ενσωματώνω αυτόματα τα προιόντα και τις διαθεσιμότητες. Είναι η πρωτη εταιρεία που αντί για διαθεσιμότητα σε αριθμό, το γράφει σαν HIGH, MEDIUM κτλ. Πως μπορώ να το εισάγω αυτό και να ελέγχει τις τιμές εγώ κανονίζοντας αν ειναι διαθέσιμο ή οχι;

Ευχαριστώ προκαταβολικά

Link to comment
Share on other sites

Κοίτα στο documentation αν υπάρχει κάποια αντιστοίχιση ανάμεσα στο λεκτικό και σε κάποιο όριο τιμών πχ HIGH (> 5) , MEDIUM (1-3) κοκ.

 

Μπορείς να κάνεις έλεγχο χρησιμοποιώντας το λεκτικό πχ if(Availability == "HIGH") κοκ. Κάποιο public λινκ για το documentation του API της εταιρείας?

  • Like 1
Link to comment
Share on other sites

Δυστυχώς δεν έχω την δυνατότητα αυτή. μόνο το xml. Δεν με ενδιαφέρει τόσο να ορίσω τιμές. Απλά να του πω όσα είναι HIGH MEDIUM LOW, να είναι In stock ή οχι διαθέσιμο. Μπορείς να με βοηθήσεις με το if? αν δεν σου είναι κόπος πες μου ένα παράδειγμα και που το τοποθετώ. Ή αν υπάρχει καποιο λινκ με καποιο documentation παρόμοιο να του ρίξω μια ματιά για να μην σε κουράζω και αν το μελετήσω καλύτερα. Σε ευχαριστώ

Έγινε επεξεργασία από obelix7
Link to comment
Share on other sites

Είσαι σε 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

Απλώς ορίζει ένα custom filter όταν καλεί το woocommerce το filter 

woocommerce_get_availability

απλώς εκτελεί την "δικιά" μας συνάρτηση. Λογικά ναι επηρεάζει όλα τα προιόντα. Δεν ξέρω τι κάνεις τα προιόντα που διαβάζεις από το XML τα κάνεις insert σαν νέα προιόντα στο woocommerce? Τα χρησιμοποιείς με κάποιο άλλο τρόπο?

Link to comment
Share on other sites

Τα βάζω σαν νεα προιοντα. όσα υπάρχουν ήδη βρισκονται απο το αναγνωριστικό και του έχω ορίσει τι να αναβαθμίζει, πχ διαθεσιμότητα, όσα δεν υπάρχουν σβήνονται και οσες ειναι καινούριες εγγραφες, γίνονται νεα προιόντα

Δεν δουλευει. μου πετάει ενα error και δεν συνεχίζει καν στην φόρτωση της υπόλοιπης σελίδας

Link to comment
Share on other sites

Ωραία πήγαινε στο αρχείο που βάλαμε τον παραπάνω κώδικα και σβήστον save και μετά δες αν φορτώνει κανονικά την σελίδα του προιόντος.

 

Αν πας στην σελίδα ενός προιόντος που διάβασε από το XML λέει κάτι πχ In stock, Out of stock για το availability?

Link to comment
Share on other sites

Μμμ βασικά βρηκα αυτό

http://stackoverflow.com/questions/38175713/additional-stock-options-in-woocommerce

και με τις κατάλληλες τροποποιήσεις στις επιλογες που έχω, δείχνει να δουλευει με μια μικρή δοκιμή που έκανα. Βαζω την μεταβλητη availability απο το XML της εταιρείας στο χpath και μου ενφανίζει την επιλογή που θέλω. Αν βλέπεις κατι λάθος ενημέρωσε με. Ευχαριστώ πολύ

Link to comment
Share on other sites

Αφού φαίνεται να δουλεύει χρησιμοποίησε το. Απλώς σημείωσε κάπου τις αλλαγές που έκανες και σε ποιά αρχεία ώστε αν σε κάποιο μελλοντικό update του woocommerce σταματήσει να δουλεύει να μπορείς να το ξαναβάλεις.

 

Δυστυχώς από woocommerce οι γνώσεις μου είναι περιορισμένες μέχρι ανύπαρκτες οπότε δεν μπόρεσα να βοηθήσω και πολύ. Προσωπικά χρησιμοποιώ nopcommerce και .NET.

Έγινε επεξεργασία από nucleus
Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.