Крючок URL-адреса для оформления заказа WooCommerce - Изменение условий в зависимости от категории продукта


Интересно, может ли кто-нибудь помочь мне настроить этот код. Я хотел бы изменить применяемое условие в этом коде:

<?php
/*
Plugin Name: Modify Klarna Checkout URL
Plugin URI: http://krokedil.com
Description: Change checkout URL for Klarna Checkout if user isn't from a specific country
Version: 1.0
Author: Krokedil
Author URI: http://krokedil.com
*/
add_filter( 'woocommerce_get_checkout_url', 'krokedil_change_checkout_url', 30 );
function krokedil_change_checkout_url( $url ) {
    $allowed_countries = array('NO');
    $customer_country = WC()->customer->get_default_country();
    if( !in_array( $customer_country , $allowed_countries ) ) {
        $url = wc_get_page_permalink( 'checkout' );
    }
    return $url;
}

Возможно ли вместо этого для товаров, принадлежащих к какой-либо категории в WooCommerce, иметь пользовательский URL-адрес для оформления заказа?

Спасибо

Author: LoicTheAztec, 2016-08-08

1 answers

Да, это возможно, внеся некоторые изменения:

add_filter( 'woocommerce_get_checkout_url', 'krokedil_change_checkout_url', 30 );
function krokedil_change_checkout_url( $checkout_url ) {

    // Define your SPECIAL CATEGORY here AND your CUSTOM URL
    $my_cat = 'Cat name'; // or for multiple categories
    // $my_cat = array('Cat name1', 'Cat name2'); 
    $my_url = 'http://my_custom_url.com/checkout/'; // custom URL

    $bool_cat = false;
    if ( sizeof( WC()->cart->cart_contents) > 0 ) {
        foreach ( WC()->cart->get_cart() as $cart_item ) {
            $item = $cart_item['data'];

            // =>  Updated a mistake in this line
            if(!empty($item) && !$bool_cat && has_term( $my_cat, 'product_cat', $item->id ) ){
                $bool_cat = true;
            }
        }
        if ( $bool_cat ) { 
            $checkout_url = $my_url;
        } 
        // This is optional
        else {
            $checkout_url = WC()->cart->get_checkout_url();
        }
    }
    return $checkout_url;
}

Этот код находится в вашем файле плагина или на function.php файл вашей активной дочерней темы или темы

Ссылки:

 2
Author: LoicTheAztec, 2017-05-23 12:19:23