• 20-01-2024, 20:05:49
    #1
    Merhaba dönüp dolaşıp woocommerce de buluyorum kendimi burada o kadar scripte para harcadım ama woocommerce de ki entegrasyonların yerini tutmuyor
    Functions.php de kullandıgım bazı kodları paylaşıyorum .

    Aşağıdaki kod eğer varyasyonlu fiyat kullanıyor iseniz fiyat aralığını kaldırır seçtiğiniz varsayılan varyasyon fiyatını gösterir.
    // show default variation price
    add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);
    function custom_variation_price( $price, $product ) {
        $default_attributes = $product->get_variation_default_attributes();
        foreach($product->get_available_variations() as $variation) {
            $is_default=true;
            foreach($default_attributes as $attribute_key => $attribute_value) {
                if($variation['attributes']['attribute_' . $attribute_key] != $attribute_value){
                    $is_default=false;
                    break;
                }
            }
            if($is_default){
                return $variation['price_html'];
            }
        }
    }

    Kapıda ödeme yöntemine ekstra ücret ekleme
    // KAPIDA ÖDEMEDE EKSTRA ÜCRET EKLEME
    add_action( 'woocommerce_cart_calculate_fees', 'custom_handling_fee', 10, 1 );
    function custom_handling_fee ( $cart ) {
        if ( is_admin() && ! defined( 'DOING_AJAX' ) )
            return;
    
        if ( 'cod' === WC()->session->get('chosen_payment_method') ) {
            $fee = 100;
            $cart->add_fee( 'Kapıda Ödeme Ekstra Ücret', $fee, true );
        }
    }
    add_action( 'wp_footer', 'custom_checkout_jqscript' );
    function custom_checkout_jqscript() {
        if ( is_checkout() && ! is_wc_endpoint_url() ) :
        ?>
        <script type="text/javascript">
        jQuery( function($){
            $('form.checkout').on('change', 'input[name="payment_method"]', function(){
                $(document.body).trigger('update_checkout');
            });
        });
        </script>
        <?php
        endif;
    }
    Hemen al butonu eklemek ve whatsapp ile sipariş ver butonu eklemek
    add_action('woocommerce_after_add_to_cart_button', 'add_whatsapp_order_button');
    function add_whatsapp_order_button() {
        global $product;
    
        $whatsapp_number = '90000000'; // WhatsApp numarasını buraya girin
        $product_name = $product->get_name();
        $product_permalink = get_permalink($product->get_id());
        $whatsapp_message = 'Merhaba, Sipariş vermek istiyorum. Ürün: ' . $product_name . ', Link: ' . $product_permalink;
    
        echo '<a href="https://api.whatsapp.com/send?phone=' . $whatsapp_number . '&text=' . urlencode($whatsapp_message) . '" target="_blank" class="button alt whatsapp-order-button"><i class="fab fa-whatsapp"></i> WhatsApp ile Sipariş Ver</a>';
    }
    //buynow
    function wpkurulum_quick_buy_button() {
        global $product;
        ?>
            <button type="submit" name="add-to-cart" value="<?php echo esc_attr($product->get_id()); ?>" class="single_add_to_cart_button button alt" id="quick_buy_button">
                <?php echo esc_html('Hemen Al'); ?>
            </button>
            <input type="hidden" name="quick_buy" id="quick_buy" value="0" />
        <?php
    }
    add_action( 'woocommerce_after_add_to_cart_button', 'wpkurulum_quick_buy_button', 10, 0 );
    
    
    function wpkurulum_quick_buy_submit_form() {
        ?>
            <script>
            jQuery(document).ready(function(){
                // listen if someone clicks 'Hemen Al' button
                jQuery('#quick_buy_button').click(function(){
                    // set value to 1
                    jQuery('#quick_buy').val('1');
                    //submit the form
                    jQuery('form.cart').submit();
                });
            });
            </script>
        <?php
    }
    add_action('woocommerce_after_add_to_cart_form', 'wpkurulum_quick_buy_submit_form');
    
    
    function wpkurulum_redirect_cart_add_cart($redirect_url) {
        if (isset($_REQUEST['quick_buy']) && $_REQUEST['quick_buy']) {
            global $woocommerce;
            $redirect_url = wc_get_checkout_url();
        }
        return $redirect_url;
    }
    add_filter('woocommerce_add_to_cart_redirect', 'wpkurulum_redirect_cart_add_cart');
    woocommerce yönetim panelindeki siparişlerim alanına whatsapp butonu ekliyor. direk müşteriye whatsapp tan yazabılırsınız
    add_filter('manage_edit-shop_order_columns', 'add_whatsapp_column_to_orders');
    function add_whatsapp_column_to_orders($columns) {
        $columns['whatsapp'] = 'WhatsApp';
        return $columns;
    }
    
    add_action('manage_shop_order_posts_custom_column', 'display_whatsapp_column_data', 10, 2);
    
    add_action('manage_shop_order_posts_custom_column', 'display_whatsapp_column_data', 10, 2);
    
    add_action('manage_shop_order_posts_custom_column', 'display_whatsapp_column_data', 10, 2);
    
    add_action('manage_shop_order_posts_custom_column', 'display_whatsapp_column_data', 10, 2);
    function display_whatsapp_column_data($column, $post_id) {
        if ('whatsapp' === $column) {
            $order = wc_get_order($post_id);
            $kargo_url = get_post_meta($post_id, 'kargo_url', true);
            $ad_soyad = $order->get_billing_first_name() . ' ' . $order->get_billing_last_name();
            $phone = $order->get_billing_phone();
            $whatsapp_message = "Merhaba " . $ad_soyad . ", Siparişinizin takibini yapmak için aşağıdaki kargo takip numarasını kullanabilirsiniz: " . $kargo_url;
            echo '<a href="https://wa.me/9' . $phone . '?text=' . urlencode($whatsapp_message) . '" target="_blank">' . $phone . ' <img width="20" src="https://cdn.cdnlogo.com/logos/w/35/whatsapp-icon.svg"></a>';
        }
    }
    havale ödeme yöntemine % lik indirim
    // Sepet ve Ödeme sayfasında %3 indirim uygula
    add_action('woocommerce_cart_calculate_fees', 'bacs_discount');
    add_action('woocommerce_review_order_before_payment', 'bacs_discount');
    
    function bacs_discount() {
        if (is_admin() && !defined('DOING_AJAX'))
            return;
    
        // BACS (Havale) ödeme yöntemi seçili mi kontrol et
        $chosen_payment_method = WC()->session->get('chosen_payment_method');
    
        if ($chosen_payment_method == 'bacs') {
            // İndirim oranı
            $discount_percentage = 3;
    
            // Sepet toplamını al
            $cart_total = WC()->cart->get_subtotal();
    
            // İndirim miktarını hesapla
            $discount_amount = ($cart_total * $discount_percentage) / 100;
    
            // İndirimi sepete ekle
            WC()->cart->add_fee(__('Havale İndirimi', 'your-text-domain'), -$discount_amount);
        }
    }
    
    // Sepet ve Ödeme sayfasında indirimli toplam tutarı göster
    add_action('woocommerce_review_order_before_order_total', 'display_discounted_total');
    
    function display_discounted_total() {
        // BACS (Havale) ödeme yöntemi seçili mi kontrol et
        $chosen_payment_method = WC()->session->get('chosen_payment_method');
    
        if ($chosen_payment_method == 'bacs') {
            // İndirim oranı
            $discount_percentage = 3;
    
            // Sepet toplamını al
            $cart_total = WC()->cart->get_subtotal();
    
            // İndirim miktarını hesapla
            $discount_amount = ($cart_total * $discount_percentage) / 100;
    
            // İndirimli toplam tutarını hesapla
            $discounted_total = $cart_total - $discount_amount;
    
            // Virgülden sonraki kısmı kaldırarak tam sayıya dönüştür
            $discounted_total = floor($discounted_total);
    
            // İndirimli toplam tutarı göster
            echo '<tr class="discounted-total">
                    <th>' . __('İndirimli Toplam', 'your-text-domain') . '</th>
                    <td>' . wc_price($discounted_total) . '</td>
                  </tr>';
        }
    }
  • 20-01-2024, 20:16:25
    #2
    www.sabamedya.com
    Eline sağlık hocam.
  • 20-01-2024, 20:16:58
    #3
    Elinize sağlık hocam
  • 20-01-2024, 20:17:53
    #4
    admin paneli siparislerim sayfası ödeme yöntemine göre arka planı renklendiriyor, ayrıca siparişlerim sayfasına sipariş verilen ürün ve varyasyon bilgisi, müşteri sipariş notu sütunlarını ekliyor.
    function custom_add_payment_method_column($columns) {
        $columns['payment_method'] = __('Payment Method', 'my-custom-theme');
        $columns['ordered_items'] = __('Ordered Items', 'my-custom-theme');
        $columns['customer_notes'] = __('Customer Notes', 'my-custom-theme');
        return $columns;
    }
    
    function custom_display_payment_method_column($column, $post_id) {
        $order = wc_get_order($post_id);
    
        switch ($column) {
            case 'payment_method':
                $payment_method = $order->get_payment_method();
                $payment_gateway = WC()->payment_gateways->payment_gateways()[$payment_method];
                $payment_method_title = $payment_gateway ? $payment_gateway->get_title() : $payment_method;
    
                // Set background color based on payment method
                $background_color = '';
                switch ($payment_method) {
                    case 'cod':
                        $background_color = 'yellow';
                        break;
    
                    case 'paytrcheckout':
                        $background_color = 'blue';
                        break;
    
                    case 'bacs':
                        $background_color = 'red';
                        break;
                }
    
                echo '<div style="background-color: ' . $background_color . ';">' . $payment_method_title . '</div>';
                break;
    
            case 'ordered_items':
                foreach ($order->get_items() as $item_id => $item) {
                    $product = $item->get_product();
                    $product_name = $product ? $product->get_name() : $item->get_name();
                    $variation_data = $item->get_variation_id() ? wc_get_product($item->get_variation_id())->get_variation_attributes() : array();
    
                    echo '<p>' . sprintf('%s - %sx%s', $product_name, $item->get_quantity(), implode(', ', $variation_data)) . '</p>';
                }
                break;
    
            case 'customer_notes':
                echo $order->get_customer_note();
                break;
        }
    }
    
    add_filter('manage_edit-shop_order_columns', 'custom_add_payment_method_column');
    add_action('manage_shop_order_posts_custom_column', 'custom_display_payment_method_column', 10, 2);
  • 20-01-2024, 20:28:57
    #5
    Emeğine sağlık hocam, bu konu sabitlenmeli bence. Altıda doldurulmalı, çok güzel bir dökümasyon olur.
  • 20-01-2024, 20:31:32
    #6
    YesilPusula adlı üyeden alıntı: mesajı görüntüle
    Emeğine sağlık hocam, bu konu sabitlenmeli bence. Altıda doldurulmalı, çok güzel bir dökümasyon olur.
    Teşekkürler, bu sekılde kodlar kullanan arkadaşlar var ise konu altından paylaşırsalar konu gayet zengin olur. Zira woocommerce kadar özgünleştirilebilen bir script yok ayrıca bedava
  • 20-01-2024, 20:33:54
    #7
    Aha
    En az ben kadar woocommerce bağımlısı birini buldum

    Keşke hemen al butonunu iptal edip o buton içine gömeceğimiz kod ile whatsapp a yönlendirebilsek. Daha estetik olurdu. Bu şekilde sepete ekle altında sevimsiz duruyor
  • 20-01-2024, 20:34:01
    #8
    Sipariş kısmında istenen firma adı ve posta kodu alanını kaldırır. Ayrıca varsayılan adres kutusu iki adet oluyor. Onu bir kutuya düşürür.
    // Posta kodu ve firma adını kaldır
    add_filter('woocommerce_checkout_fields', 'custom_override_checkout_fields');
    function custom_override_checkout_fields($fields){
        unset($fields['billing']['billing_postcode']);
        unset($fields['billing']['billing_company']);
        return $fields;
    }
    
    // Ödeme adresi 1. kutusunu açık adres olarak değiştir
    add_filter('woocommerce_default_address_fields', 'custom_override_default_address_fields');
    function custom_override_default_address_fields($address_fields){
        $address_fields['address_1']['label'] = 'Açık Adres';
        return $address_fields;
    }
    
    // Ödeme adresi 2. kutusunu kaldır
    add_filter('woocommerce_checkout_fields', 'custom_override_checkout_fields_2');
    function custom_override_checkout_fields_2($fields){
        unset($fields['billing']['billing_address_2']);
        return $fields;
  • 20-01-2024, 20:40:57
    #9
    PhoenixTR adlı üyeden alıntı: mesajı görüntüle
    Teşekkürler, bu sekılde kodlar kullanan arkadaşlar var ise konu altından paylaşırsalar konu gayet zengin olur. Zira woocommerce kadar özgünleştirilebilen bir script yok ayrıca bedava
    Elinize sağlık