Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα σας,

Αρχάριος στην κατασκευή ιστοσελίδων, ίσως φανει αφελής η ερώτηση μου. 

Βασικά, ότι γράφει ο τίτλος. Έχω δύο μεταφορικές και όταν το καλάθι υπερβαίνει τα 50 ευρώ θα ήθελα ο πελάτης να μπορεί να επιλέξει μια από τις δύο μεταφορικές για να παραλάβει. Τώρα μου εμφανίζει την πρώτη κατά σειρά επιλογή δωρεάν μεταφορικών στον πίνακα με όλα τα shipping methods. 

Προς διευκόλυνση σας, όταν υπάρχει δυνατότητα για Δωρεάν μεταφορικά, όλες οι άλλες επιλογές δεν εμφανίζονται στο chekout με χρήση του pluging "wc hide shipping methods".

γνωρίζει κανείς τι θα μπορούσα να κάνω?

ευχαριστώ πολύ

Δημοσ.

καλησπέρα, εχω ήδη δημιουργήσει για κάθε κουριερ δυο τροπους αποστολής. Ένας με fixed price και άλλος ένας με Δωρεαν.  ενώ ...δουλεύει ο αλγοριθμος, μου εμφανίζει μόνο το ένα κουριερ, αυτό που εμφανιζεται πιο πάνω στην λίστα με όλους τους τρόπους αποστολής, fixed price και Δωρεάν δλδ.

Δημοσ.

Όταν απενεργοποιείς το plugin ο δεύτερος τρόπος δωρεάν αποστολής εμφανίζεται? Αν ναι το πρόβλημα είναι εκει

Δημοσ.

Καλημέρα και ευχαριστώ για την βοήθεια.

Δυστυχώς, όταν απενεργοποιω το plug-in εμφανίζονται όλοι οι τρόποι μεταφοράς δλδ και δωρεάν με ΕΛΤΑ και 3.50€ με ΕΛΤΑ. Το ίδιο και με την acs.

Δημοσ.

Αν προσθέσεις αυτό στο functions.php του θέματος που χρησιμοποιείς μπορείς να κάνεις τη δουλειά σου χωρίς το plugin. Απλά θα πρέπει να αλλάξεις τα ονόματα με αυτά που έχουν οι τρόποι αποστολής σου.

add_filter( 'woocommerce_package_rates', 'hide_shipping_method_based_on_cart_price', 10, 2 );
function hide_shipping_method_based_on_cart_price( $shipping_methods, $package ) {    
        if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;    
        $total = WC()->cart->get_cart_contents_total() + WC()->cart->get_cart_contents_tax();        
        if( $total < 50 ) {
            unset( $shipping_methods['acs_free_shipping']);
            unset( $shipping_methods['elta_free_shipping']);
        } elseif ( $total >= 50 ) {    
            unset( $shipping_methods['acs_shipping']);                
            unset( $shipping_methods['elta_shipping']);
        }        
        return $shipping_methods;
    }

  • Like 1
  • 2 εβδομάδες αργότερα...
Δημοσ.

καλησπέρα,

Απενεργοποίησα το plugin  "wc hide shipping methods". και στην συνέχεια αντέγραψα (στο κενό) αρχείο functions.php του child theme τον κώδικα που μου έγραψες εχοντας μετονομάσει τα ονόματα μτφ. το αποτέλεσμα φαίνεται στην home page! τι ματσακονιά έκανα άραγες? :)

image.png.646eb6fb4ff0aa414a3b9a7f4bfa7e9e.png

 

image.png.8824153f454e490944d83ccf303c7e87.png

 

Δημοσ.

Δεν έχεις πρόσβαση από ftp η από τον filemanager του host σου (πχ από το cpanel)?

Δεν ξέρω γιατί στο δείχνει εκεί, στο debug.log σου δείχνει error?

Δοκίμασε να βάλεις <?php σε μια γραμμή πριν τον κώδικα

Επίσης στα ονόματα που έχεις αλλάξει έχεις αφήσει κενά λάθος μετά την πρώτη απόστροφο. Και στο δεύτερο ACS λείπει μια απόστροφος και μετά το δεύτερο ΕΛΤΑ Courier πάλι έχει κενό. Διόρθωσε λίγο πρώτα αυτές τις λεπτομέρειες και θα βρεθεί η λύση

  • Like 1
Δημοσ.

Φίλε μου ανεξαρτήτως αν βρεθεί λύση οφαίλω να σε ευχαριστήσω για την βοήθεια και τον χρόνο σου.

μετά το μήνυμα που έστειλα έκανα κάποιες αλλαγές διαβάζοντας από εδώ και από εκεί ({είμαι άσχετος με προγραμματισμό). 

στην αρχή πρόσθεσα <?php και στο τέλος >?.  διόρθωσα τα κενά μου αναφέρεις και έβγαλα τις απόστροφους όπως διάβασα εδώ: https://stackoverflow.com/questions/41298675/parse-error-syntax-error-unexpected-expecting-identifier-t-string-or-va 

εν τέλει πέρασα το παρακάτω:

 

<?php

add_filter( 'woocommerce_package_rates', 'hide_shipping_method_based_on_cart_price', 10, 2 );

function hide_shipping_method_based_on_cart_price( $shipping_methods, $package ) {   

        if ( is_admin() && ! defined( 'DOING_AJAX' ) )

        return;   

        $total = WC()->cart->get_cart_contents_total() + WC()->cart->get_cart_contents_tax();       

        if( $total < 50 ) {

            unset( $shipping_methods[ACS_(ΔΩΡΕΑΝ)]);

            unset( $shipping_methods[ΕΛΤΑ_Courier_(ΔΩΡΕΑΝ)]);

        } elseif ( $total >= 50 ) {   

            unset( $shipping_methods[ACS]);               

            unset( $shipping_methods[ΕΛΤΑ_Courier]);

        }       

        return $shipping_methods;

    }

?>

 

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

λες να φταίει που δεν αναφέρω στον κώδικα την τρίτη επιλογή, για παραλαβή από το κατάστημα? που θα μπορούσα να την προσθέσω στον κώδικα για να δοκιμάσω?

Δημοσ. (επεξεργασμένο)

Όχι δεν φταίει αυτό, ο κώδικας απλά κρύβει τις μη επιθυμητές επιλογές. Χωρίς τον κωδικα δλδ θα πρέπει να εμφανίζει όλες τις επιλογές, και με τον κώδικα να σβήνει αναλογα με το ποσό τις λάθος επιλογές. Το ότι δε σε αφήνει να πειράξεις το καλάθι είναι ίσως γιατί βγάζει καπου ερρορ. Κανονικά αν είναι να πειράζεις το οτιδήποτε πρέπει να αποκτήσεις πρόσβαση στο debug.log αρχείο για να βλέπεις αν βγάζει κάποιο συντακτικό- γραμματικό λάθος (όχι λογικό).

Επίσης κανονικά πρέπει να κρατάς κάποιο backup από τα αρχεία που αλλάζεις πριν τις αλλαγές, και να έχεις και πρόσβαση από ftp ώστε να μπορείς να επαναφέρεις το αρχείο αν κάτι πάει στραβά και πέσει το σάιτ.

Ξαναβάλε τις αποστρόφους που έβγαλες από τα ονόματα. Αν δεν δουλεύει ούτε πάλι, ίσως δεν είναι σωστά τα ονόματα των τρόπων αποστολής(είναι διαφορετικά αυτά που εμφανίζονται και διαφορετικά τα ονόματα-id τους.

Για να βρεις τα σωστά ονόματα σβήσε τον κώδικα που έχεις βάλει προσωρινά μην τυχόν και έχει κανένα λάθος και βάλε προσωρινά αυτόν:

add_filter( 'woocommerce_shipping_classes_columns', 'bbloomer_shipping_class_id_column' );
function bbloomer_shipping_class_id_column( $shipping_class_columns ) {
    $delivery_zones = WC_Shipping_Zones::get_zones();
    foreach ((array) $delivery_zones as $key => $the_zone) {
        echo "<b>" . $the_zone['zone_name'] . "</b><br>";
        foreach ($the_zone['shipping_methods'] as $value) {
            echo $value->title . " ( " . $value->method_title . " - " . $value->cost . ") " . $value->id . ":" . $value->instance_id;
            echo "</br>";
        }
    }        
   return $shipping_class_columns;
}

 

Μετά πήγαινε στη σελίδα /wp-admin/admin.php?page=wc-settings&tab=shipping&section=classes

και θα πρέπει να σου εμφανίζει ένα κατεβατό με πληροφορίες για τις μεθόδους σου. Αυτό που ψάχνεις θα είναι της μορφής:
elta_shipping:14

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

Επεξ/σία από friggs
  • 2 εβδομάδες αργότερα...
Δημοσ.

καλησπέρα φίλε μου,

το δουλεύω το θέμα και μετά από πειραματισμούς κατέληξα στο συμπέρασμα πως ότι και τα γράφω στο functions.php αυτό δεν τρέχει! Δοκίμασα τώρα το plugin code snippets, δημιούργησα ένα καινούργιο με τον κώδικα που  μου έγραψες και βουαλά, τα αποτελέσματα είναι όπως προέβλεψες:

Ελλάδα
ΕΛΤΑ Courier ( Flat rate - 3,50) flat_rate:8
ACS ( Flat rate - 3,50) flat_rate:12
ACS (ΔΩΡΕΑΝ) ( Free shipping - ) free_shipping:13
ΕΛΤΑ Courier (ΔΩΡΕΑΝ) ( Free shipping - ) free_shipping:11
ΠΑΡΑΛΑΒΗ ΑΠΟ ΤΗΝ ΕΔΡΑ ΜΑΣ (ΔΩΡΕΑΝ) ( Local pickup - ) local_pickup:10
Ευρώπη 01
Flat rate ( Flat rate - 17,00) flat_rate:2
Ευρώπη 02
Flat rate ( Flat rate - 22,00) flat_rate:3

το κοιτάω και σε ενημερώνω για την εξέλιξη. 

Σε ευχαριστώ πολύ!

υγ--> cpanel έχω μέσω του παρόχου. λίγο χαοτικά τόσα άγνωστα σε εμένα αρχεία αλλά θα το μελετήσω.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...