Mengaktifkan pengiriman gratis di Woo Commerce dengan barang tertentu [ditutup]

8

Saya ingin tahu apakah mungkin untuk memungkinkan pengiriman gratis dengan Woo Commerce hanya jika barang-barang tertentu (atau barang-barang dari kategori / kelas pengiriman tertentu) termasuk dalam keranjang.

Opsi Pengiriman Gratis hanya diaktifkan berdasarkan nilai keranjang atau melalui kode kupon jadi saya menyelidiki pengiriman Tarif Rata dan menemukan bahwa itu memprioritaskan kelas pengiriman paling mahal daripada yang lebih murah. Ini berarti kelas pengiriman gratis yang saya buat tidak pernah mengesampingkan biaya default.

Saya memahami logika di balik ini tetapi kebalikan dari apa yang saya butuhkan karena idenya adalah untuk memberikan insentif pembelian produk margin keuntungan yang lebih tinggi dengan menghilangkan biaya pengiriman ketika mereka dimasukkan dalam pesanan.

Saya tidak tahu apakah yang ingin saya capai sama sekali tidak mungkin dalam Woo Commerce. Kupon yang hanya berlaku untuk produk / kategori tertentu tampaknya merupakan yang terdekat yang bisa saya dapatkan tetapi saya lebih suka tidak memaksa pengguna untuk memasukkan kode saat checkout.

Adakah yang tahu jika ada cara sederhana untuk memberi pengguna yang membeli produk tertentu pengiriman gratis?

James O'Neill
sumber
3
Bagaimana sih pertanyaan terkait plugin Wordpress ini , dinaikkan 8 kali dan disukai 3 kali oleh pengembang Wordpress ditutup sebagai "di luar topik" Oo
Ben
@Ben karena ini adalah plugin WooCommerce, dan bukan pertanyaan khusus WordPress (seperti yang dinyatakan dalam pusat bantuan )
Alexander Holsgrove

Jawaban:

1

Mungkin ini tidak sepenuhnya menjawab pertanyaan Anda, tetapi plugin pengiriman rate tabel memang memberi Anda opsi untuk menetapkan prioritas untuk tarif tertentu. Selanjutnya, diskusi ini memberikan banyak petunjuk tentang di mana Anda bisa mencari solusi

Ewout
sumber
Terima kasih. Melihat dokumentasi untuk Pengiriman Tabel Rate, tampaknya ia akan melakukan apa yang saya butuhkan. Jika majikan saya menggunakan lisensi saya akan memperbarui apakah itu digunakan.
James O'Neill
Tolong jangan memposting tautan ke sumber daya luar. Lebih baik panggil mereka di sini dan gunakan tautan di atasnya. Jika tautan berjalan, jawabannya tidak berguna dan kami mengalami perjuangan keras untuk mencegah pembusukan tautan. -1
kaiser
5

Adakah yang tahu jika ada cara sederhana untuk memberi pengguna yang membeli produk tertentu pengiriman gratis?

Sebenarnya, saat membuat produk, Anda bisa menandainya sebagai produk Virtual tepat di dalam editor produk dan itu akan mengecualikan pengiriman sepenuhnya untuk item itu.

Nathan
sumber
1
Ini berfungsi untuk produk sederhana, tetapi tidak untuk jenis produk lain - variabel, misalnya. Tapi usaha yang bagus. Ini mungkin akan bekerja untuk beberapa orang.
Alexander Lee Williams
Mengapa ini tidak berfungsi untuk produk variabel? Anda dapat menandai setiap variasi sebagai virtual.
BFTrick
Saya setuju @BFTrick
Nathan
1
Ini juga buruk karena sistem tidak akan mengakses untuk alamat PENGIRIMAN pelanggan, yang cukup penting;)
Kane
2

Berikut cuplikan yang diambil dari beberapa Intisari dari diskusi masalah GitHub yang ditautkan oleh @Ewout dalam jawaban lain. Saya menambahkan var_dump(), sehingga Anda dapat menghapus komentar dan memeriksa apa yang ingin Anda hapus.

$available_methodsadalah arraydari:

$available_methods as $method_id => $method

Bandingkan dengan $method_idjika Anda membutuhkan pemeriksaan yang lebih spesifik.

// Hide standard shipping option when free shipping is available
add_filter( 'woocommerce_available_shipping_methods', 'wpse90835_hide_standard_shipping_when_free_is_available' );
/**
 *  Hide Standard Shipping option when free shipping is available
 * 
 * @param array $available_methods
 */
function wpse90835_hide_standard_shipping_when_free_is_available( $available_methods )
{
    // Developers!: Dump this to see what you can unset
    # var_dump( $available_methods );

    // remove standard shipping option
    if ( 
        isset( $available_methods['free_shipping'] ) 
        AND isset( $available_methods['flat_rate'] )
    )
        unset( $available_methods['flat_rate'] );


    return $available_methods;
}
kaisar
sumber
2

Saya telah membuat plugin WooCommerce yang memungkinkan pengguna untuk mengonfigurasi pengaturan lanjutan untuk pengiriman gratis. Dalam plugin ini dimungkinkan untuk memilih produk tertentu untuk pengiriman gratis.

Anda dapat menemukan plugin gratis di wordpress.org yang disebut WooCommerce Advanced Free Shipping

Semoga ini membantu.

Sormano
sumber
0

Berdasarkan kode kaiser (di atas) saya telah membuat kode berikut:

    /**
 *  Hide free shipping option when Standard Shipping is available
 * 
 * @param array $available_methods
 */
function mwe_hide_free_shipping_when_standard_shipping_is_available($available_methods) {

    // remove standard shipping option
    if (isset($available_methods['free_shipping']) AND isset( $available_methods['flat_rate'])) {
        unset($available_methods['free_shipping']);
    }

    return $available_methods;
}
add_filter('woocommerce_available_shipping_methods', 'mwe_hide_free_shipping_when_standard_shipping_is_available');

Dan pada gilirannya mengatur WooCommerce, saya memiliki Free Shipping dan Flat Rate keduanya diaktifkan di Opsi Pengiriman Woo. Kemudian saya baru saja mengatur Kelas Pengiriman, tentukan biayanya (mis., £ 7,95) di halaman opsi Tarif Rata, dan kemudian tambahkan saja kelas pengiriman itu ke produk yang ingin saya kenakan biaya £ 7,95 p & p untuk.

larangan geoengineering
sumber
0

Opsi "virtual" akan menghapus semua biaya pengiriman, tetapi juga menghapus opsi untuk mengirim ke alamat yang berbeda dari alamat penagihan pelanggan. Ini bukan masalah jika pelanggan membeli produk non-virtual lain juga, tetapi apakah itu satu-satunya yang mereka beli.

pengguna51366
sumber