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>';
}
add_action( 'template_redirect', 'redirect_logged_users' );
function redirect_logged_users() {
if ( is_user_logged_in() ) {
// здесь вместо 5 укажите ID страницы, на которую нужно перенаправить авторизованного пользователя
wp_redirect( get_permalink( 5 ) );
}
}
$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 );
}
}
$alt = get_post_meta( $image_id, '_wp_attachment_image_alt', true );
$title = get_post_field( 'post_title', $image_id );
$caption = get_post_field( 'post_excerpt', $image_id );
$description = get_post_field( 'post_content', $image_id );
add_filter('woocommerce_order_status_changed', 'my_custom_function', 10, 4 );
function my_custom_function( $order_id, $old_status, $new_status, $order ) {
// ... ваш PHP код
}
home_url( 'blog' );
home_url( get_page_uri( get_option('page_for_posts') ) );
get_post_type_archive_link( 'post' );
// Подключаем локализацию в самом конце подключаемых к выводу скриптов, чтобы скрипт
// '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();
{ formState && <form className = "form" onChange={onChangeHandler} style={styles}><form>}