WooCommerce: Ürün Fiyatını Programlı Olarak Ayarlama / Geçersiz Kılma

0
2595

Bazen vaktimiz çok kısıtlı olabiliyor. Örneğin bir satış sitesinde ürünlerin fiyatlarını ayarlamak için vaktimiz yeterli olmayabilir. Bazen ürününüzün normal fiyatı ya da indirimli fiyatını sadece siteye giriş yapmış olan kullanıcılara göstermek istiyorsunuz. Siteye giriş yapmayan yani misafirler için bu normal fiyat ya da indirimli fiyatı göstermek istemiyorsanız bunu bir kaç kod yardımıyla işinizi kolaylaştırabilirsiniz.

Aşağıdaki resimde gördüğünüz gibi bir müşteri siteye giriş yapmış ve ürünün fiyatını 3 TL olarak görmektedir.

Yukarıdaki resimde bu ürün sadece giriş yapan ya da kayıtlı olan müşteriler için %20 indirim uygulandığını göstermektedir. Normalde ürünün fiyatı 3.75 TL olmaktadır.

PHP Snippet: Ürün Fiyatını Programlı Olarak Değiştirin

Aşağıdaki kod satırında bir ürünün fiyatını yalnızca giriş yapmış ya da kayıtlı bir müşteri ise fiyatını değiştirecektir. Aynı mantığı sadece bir ürün değil, ürün kategorisi içinde fiyatları değiştirebiliriz. Örneğin fiyatı 30 TL altında olan tüm ürünler için ek ücret talebi uygulayabilirsiniz.

add_filter( 'woocommerce_get_price_html', 'urun_fiyat_indirim', 9999, 2 );
 
function urun_fiyat_indirim( $price_html, $product ) {
    
    // Admin görmesin
    if ( is_admin() ) return $price_html;
    
    // Ürün Fiyatı Boş Değilse
    if ( '' === $product->get_price() ) return $price_html;
    
    // Müşteri Giriş Yapmış ise %20 indirim yapın
    if ( wc_current_user_has_role( 'customer' ) ) {
        $orig_price = wc_get_price_to_display( $product );
        $price_html = wc_price( $orig_price * 0.80 );
    }
    
    return $price_html;
 
}
 
 
add_action( 'woocommerce_before_calculate_totals', 'sepet_fiyat_indirim', 9999 );
 
function sepet_fiyat_indirim( $cart ) {
    //Admin'e yapma ve Ajax Aktif değilse
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
 
    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) return;
 
    // Müşteri giriş yapmamış ise sepette indirim yapma
    if ( ! wc_current_user_has_role( 'customer' ) ) return;
 
    // Sepette ki tüm ürünlere %20 indirim uygula
    foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
        $product = $cart_item['data'];
        $price = $product->get_price();
        $cart_item['data']->set_price( $price * 0.80 );
    }
 
}

Aşağıdaki resimde gördüğünüz gibi giriş yapmamış misafir müşteriler için ürünün fiyatı bu şekilde göstermektedir.

Bu Kodu Nereye Ekleyeceksiniz ?

PHP parçacıklarını temanın içindeki functions.php dosyasının en altına yerleştirebilirsiniz. Eğer “?>” varsa bunun üstüne ekleyiniz. Bu tür dosyaları düzenlerken ne yaptığınızı bildiğinizden emin olun. Daha fazla desteğe ihtiyacınız olursa yorum bölümüne yazabilirsiniz.

CEVAP VER

Please enter your comment!
Please enter your name here