remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
add_action( 'wp', 'remove_default_sorting_storefront' );
function remove_default_sorting_storefront() {
remove_action( 'woocommerce_after_shop_loop', 'woocommerce_catalog_ordering', 10 );
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 10 );
}
.woocommerce-ordering {
display: none;
}
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
// billing
unset($fields['billing']['billing_first_name']);
unset($fields['billing']['billing_last_name']);
unset($fields['billing']['billing_email']);
unset($fields['billing']['billing_phone']);
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);
unset($fields['billing']['billing_postcode']);
// shipping
unset($fields['shipping']['shipping_first_name']);
unset($fields['shipping']['shipping_last_name']);
unset($fields['shipping']['shipping_email']);
unset($fields['shipping']['shipping_phone']);
unset($fields['shipping']['shipping_company']);
unset($fields['shipping']['shipping_city']);
unset($fields['shipping']['shipping_address_1']);
unset($fields['shipping']['shipping_address_2']);
unset($fields['shipping']['shipping_country']);
unset($fields['shipping']['shipping_state']);
unset($fields['shipping']['shipping_postcode']);
return $fields;
}
// каким-то образом получаете id пользователя
$user_id = get_current_user_id();
// далее проверяете, есть ли у пользователя подписки
if (wcs_user_has_subscription($user_id)) {
// получаете массив объектов WC_Subscription
$users_subscriptions = wcs_get_users_subscriptions($user_id);
// далее, вытаскиваете из объектов всё, что вам нужно. Здесь я привёл лишь некоторые данные из возможных. На самом деле их там гораздо больше. Версия WC Subscription 5.6.0.
$result = array_map(
function($subscription) {
return [
'id' => $subscription->get_id(),
'version' => $subscription->get_version(),
'customer_id' => $subscription->get_customer_id(),
'status' => $subscription->get_status(),
'currency' => $subscription->get_currency(),
'date_created' => $subscription->get_date( 'date_created' ),
'next_payment' => $subscription->get_date( 'next_payment' ),
'date_end' => $subscription->get_date( 'end' ),
'date_trial_end' => $subscription->get_date( 'trial_end' ),
'payment_method' => $subscription->get_payment_method_title(),
'total' => $subscription->get_total(),
'discount_total' => $subscription->get_discount_total(),
'shipping_total' => $subscription->get_shipping_total()
];
},
$users_subscriptions
);
echo '<pre>';
print_r($result);
echo '</pre>';
}
$product_id = $_REQUEST['product_id'];
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
if ( $cart_item['product_id'] == $product_id ) {
WC()->cart->remove_cart_item( $cart_item_key );
}
}
// Подключаем локализацию в самом конце подключаемых к выводу скриптов, чтобы скрипт
// 'twentyfifteen-script', к которому мы подключаемся, точно был добавлен в очередь на вывод.
// Заметка: код можно вставить в любое место functions.php темы
add_action( 'wp_enqueue_scripts', 'myajax_data', 99 );
function myajax_data(){
// Первый параметр 'twentyfifteen-script' означает, что код будет прикреплен к скрипту с ID 'twentyfifteen-script'
// 'twentyfifteen-script' должен быть добавлен в очередь на вывод, иначе WP не поймет куда вставлять код локализации
// Заметка: обычно этот код нужно добавлять в functions.php в том месте где подключаются скрипты, после указанного скрипта
wp_localize_script( 'twentyfifteen-script', 'myajax',
array(
'url' => admin_url('admin-ajax.php')
)
);
}
add_filter( 'woocommerce_product_tabs', 'woo_remove_product_tabs', 98 );
function woo_remove_product_tabs( $tabs ) {
unset( $tabs['description'] );
unset( $tabs['additional_information'] );
return $tabs;
}
add_action('woocommerce_product_options_general_product_data', 'your_function_for_display_custom_meta_data');
function your_function_for_display_custom_meta_data() {
woocommerce_wp_text_input(
array(
'id' => 'rangeby1',
'placeholder' => 'Текст плейсхолдера',
'label' => 'Текст label'
));
// подобным образом, добавляете все переменные, как инпуты...
}
add_action('woocommerce_process_product_meta', 'your_function_for_save_custom_meta_data');
function your_function_for_save_custom_meta_data( $post_id ){
$rangeby1 = $_POST['rangeby1'];
update_post_meta($post_id, 'rangeby1', esc_html($rangeby1));
// подобным образом, добавляете сохранение для всех полей...
}
add_action( 'woocommerce_before_calculate_totals', 'your_function_for_calculate_cart_totals', 10, 1 );
function your_function_for_calculate_cart_totals( $cart ){
// перебор в цикле всех товаров в корзине, примерно так:
foreach ( $cart->get_cart() as $cart_item ) {
// получаете значения переменных:
$rangeby1 = get_post_meta( $cart_item['data']->get_ID(), 'rangeby1', true );
// прописываете логику перерасчета цен... тут уже всё индивидуально...
}
}
global $product;
$brand = $product->get_name();
add_action('woocommerce_product_options_general_product_data', 'add_custom_price_usd');
function add_custom_price_usd() {
echo '<h3>Цена в долларах</h3>';
woocommerce_wp_text_input(
array(
'id' => 'price_usd',
'placeholder' => 'Цена в долларах',
'label' => __('Цена в долларах', 'my-text-domain'),
'desc_tip' => 'true'
)
);
}
add_action('woocommerce_process_product_meta', 'save_custom_price_usd');
function save_custom_price_usd( $post_id ){
$price_usd_field = $_POST['price_usd'];
update_post_meta($post_id, 'price_usd', esc_html($price_usd_field));
}
add_action( 'woocommerce_before_calculate_totals', 'set_custom_price_usd_to_cart', 10, 1 );
function set_custom_price_usd_to_cart( $cart ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
foreach ( $cart->cart_contents as $key => $value ) {
if ( ... проверяем, принадлежит ли товар категории Second... ) {
/* если да - меняем цену */
$value['data']->set_price(... цена в долларах...);
}
}
}
get_post_meta( $product->get_ID(), 'price_usd', true );