$storefront_version, /** * Initialize all the things. */ 'main' => require 'inc/class-storefront.php', 'customizer' => require 'inc/customizer/class-storefront-customizer.php', ); require 'inc/storefront-functions.php'; require 'inc/storefront-template-hooks.php'; require 'inc/storefront-template-functions.php'; require 'inc/wordpress-shims.php'; if ( class_exists( 'Jetpack' ) ) { $storefront->jetpack = require 'inc/jetpack/class-storefront-jetpack.php'; } if ( storefront_is_woocommerce_activated() ) { $storefront->woocommerce = require 'inc/woocommerce/class-storefront-woocommerce.php'; $storefront->woocommerce_customizer = require 'inc/woocommerce/class-storefront-woocommerce-customizer.php'; require 'inc/woocommerce/class-storefront-woocommerce-adjacent-products.php'; require 'inc/woocommerce/storefront-woocommerce-template-hooks.php'; require 'inc/woocommerce/storefront-woocommerce-template-functions.php'; require 'inc/woocommerce/storefront-woocommerce-functions.php'; } if ( is_admin() ) { $storefront->admin = require 'inc/admin/class-storefront-admin.php'; require 'inc/admin/class-storefront-plugin-install.php'; } /** * NUX * Only load if wp version is 4.7.3 or above because of this issue; * https://core.trac.wordpress.org/ticket/39610?cversion=1&cnum_hist=2 */ if ( version_compare( get_bloginfo( 'version' ), '4.7.3', '>=' ) && ( is_admin() || is_customize_preview() ) ) { require 'inc/nux/class-storefront-nux-admin.php'; require 'inc/nux/class-storefront-nux-guided-tour.php'; if ( defined( 'WC_VERSION' ) && version_compare( WC_VERSION, '3.0.0', '>=' ) ) { require 'inc/nux/class-storefront-nux-starter-content.php'; } } /** * Note: Do not add any custom code here. Please use a custom plugin so that your customizations aren't lost during updates. * https://github.com/woocommerce/theme-customisations */ include('inc/shortcodes.php'); include('functions/catalog.php'); include('functions/common.php'); // Scripts add_action( 'wp_enqueue_scripts', 'theme_name_scripts' ); // add_action('wp_print_styles', 'theme_name_scripts'); // можно использовать этот хук он более поздний function theme_name_scripts() { wp_enqueue_style( 'normalize.css', get_template_directory_uri().'/module/normalize/normalize.css' ); wp_enqueue_style( 'owl.carousel.min.css',get_template_directory_uri().'/module/owl-carousel/owl.carousel.min.css' ); wp_enqueue_style( 'jquery.fancybox.min.css', get_template_directory_uri().'/module/fancybox/jquery.fancybox.min.css' ); wp_enqueue_style( 'jquery.formstyler.css', get_template_directory_uri().'/module/formstyler/jquery.formstyler.css' ); wp_enqueue_style( 'jquery.formstyler.theme.css', get_template_directory_uri().'/module/formstyler/jquery.formstyler.theme.css' ); wp_enqueue_style( 'style.css', get_template_directory_uri().'/css/style.css' ); wp_enqueue_style( 'custom-style-css', get_template_directory_uri().'/css/custom.css' ); /*wp_enqueue_script( 'jquery.min.js', get_template_directory_uri() . '/module/jquery/jquery.min.js' ); wp_enqueue_script( 'jquery.fancybox.min.js', get_template_directory_uri() . '/module/fancybox/jquery.fancybox.min.js' ); wp_enqueue_script( 'jquery.sticky.js', get_template_directory_uri() . '/module/sticky/jquery.sticky.js' ); wp_enqueue_script( 'jquery.formstyler.min.js', get_template_directory_uri() . '/module/formstyler/jquery.formstyler.min.js' ); wp_enqueue_script( 'owl.carousel.min.js', get_template_directory_uri() . '/module/owl-carousel/owl.carousel.min.js' ); wp_enqueue_script( 'jquery.inputmask.min.js', get_template_directory_uri() . '/module/maskinput/jquery.inputmask.min.js' ); wp_enqueue_script( 'jquery.matchHeight-min.js', get_template_directory_uri() . '/module/match-height/jquery.matchHeight-min.js' ); wp_enqueue_script( 'bundle.min.js', get_template_directory_uri() . '/js/bundle.min.js' );*/ } function remove_image_zoom_support() { remove_theme_support( 'wc-product-gallery-zoom' ); } add_action( 'wp', 'remove_image_zoom_support', 100 ); add_theme_support( 'menus' ); add_action( 'init', 'register_my_menus' ); function register_my_menus() { register_nav_menus( array( //'primary-menu' => __( 'Primary Menu' ), //'secondary-menu' => __( 'Secondary Menu' ) 'bottom-1' => __( 'Bottom 1' ), 'bottom-2' => __( 'Bottom 2' ), 'bottom-3' => __( 'Bottom 3' ), ) ); } function cf_widgets_init() { register_sidebar( array( 'name' => __( 'Banner WD', 'storefront' ), 'id' => 'banner-wd', 'description' => __( 'Banner WD', 'storefront' ), 'before_widget' => '', 'after_widget' => '', 'before_title' => '', ) ); } add_action( 'widgets_init', 'cf_widgets_init' ); add_action('init', 'save_review_form'); function save_review_form() { if( $_POST['action'] == 'save_review' ) { /*if(recaptcha_validate($_POST['token']) == false) { http_response_code(400); echo "Spam check fails. Please contact us."; exit; }*/ if( $_POST['review'] != '' ) { $product_info = get_post( $_POST['product_id'] ); $title = "Review #".rand(0, 100000); $post_data = array( 'post_title' => wp_strip_all_tags( $title ), 'post_content' => $_POST['review'], 'post_status' => 'draft', 'post_type' => 'product_reviews', 'post_author' => 1, ); // Вставляем запись в базу данных $post_id = wp_insert_post( $post_data ); update_post_meta( $post_id, 'product_id', $_POST['product_id'] ); update_post_meta( $post_id, 'user_id', get_current_user_id() ); update_post_meta( $post_id, 'rating', $_POST['rating'] ); update_post_meta( $post_id, 'product_name', $product_info->post_title ); } echo "
"; print_r( $_POST ); echo ""; exit(); } /*if( $_POST['action'] == 'add2basket' ) { $product_id = $_POST['product_id']; $variation_id = $_POST['variation_id']; global $woocommerce; // if it does exist then remove it $items = $woocommerce->cart->get_cart(); foreach($items as $cart_item_key => $values) { $item_id = $values['data']->get_id(); if( $item_id == $variation_id ) { $exist_cart_id = $cart_item_key; } } //echo $exist_cart_id; if( $exist_cart_id ) { $WC_Cart = new WC_Cart(); $WC_Cart->remove_cart_item( $exist_cart_id ); } else { // Let's add $woocommerce->cart->add_to_cart( $product_id, $quantity = 1, $variation_id ); } echo count( $woocommerce->cart->get_cart() ); }*/ if( $_POST['action'] == 'remove2basket' ) { $item_id = $_POST['id']; $WC_Cart = new WC_Cart(); $WC_Cart->remove_cart_item( $item_id ); //exit(); } } function remove_key($key) { parse_str($_SERVER['QUERY_STRING'], $vars); $url = strtok($_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], '?') . http_build_query(array_diff_key($vars,array($key=>""))); return $url; } add_action('init', 'remove_basket_item_func'); function remove_basket_item_func() { $cart_key = $_GET['remove_cart_item']; if( $cart_key ) { global $woocommerce; $new_url = GetLangLink( '/checkout/' ); $WC_Cart = new WC_Cart(); $WC_Cart->remove_cart_item( $cart_key ); //removeCartItemDB( $cart_key ); //die(); wp_redirect( $new_url ); exit(); } } add_action('wp_ajax_add2basket', 'add2basket_callback'); add_action('wp_ajax_nopriv_add2basket', 'add2basket_callback'); function add2basket_callback() { $product_id = $_POST['product_id']; $variation_id = $_POST['variation_id']; $is_bundle = $_POST['is_bundle']; global $woocommerce; if( !$is_bundle ) { $product_id = OriginalPostWpml( $product_id ); $woocommerce->cart->add_to_cart( $product_id, $quantity = 1, $variation_id ); } else { // if it does exist then remove it $items = $woocommerce->cart->get_cart(); foreach($items as $cart_item_key => $values) { $item_id = $values['data']->get_id(); if( $item_id == $variation_id ) { $exist_cart_id = $cart_item_key; break; } } echo $exist_cart_id; if( $exist_cart_id ) { WC()->cart->remove_cart_item( $exist_cart_id ); } else { // Let's add $woocommerce->cart->add_to_cart( $product_id, $quantity = 1, $variation_id ); } } wp_die(); } function recaptcha_validate($token) { if (!isset($token)) { return false; } $siteverify = 'https://www.google.com/recaptcha/api/siteverify'; $secret = '6LcnFMcZAAAAAKUkSU738REHfDK31x0UFWYexvoM'; $response = file_get_contents($siteverify . '?secret=' . $secret . '&response=' . $token); $response = json_decode($response, true); return $response['success']; } add_action('wp_ajax_update_cart_item', 'update_cart_item_callback'); add_action('wp_ajax_nopriv_update_cart_item', 'update_cart_item_callback'); function update_cart_item_callback() { /*echo "
"; print_r( $_POST ); echo "";*/ global $woocommerce; $items = $_POST['items']; foreach( $items as $item ) { if( !$item['quantity'] ) { continue; } $woocommerce->cart->set_quantity( $item['product_cart_id'], $item['quantity']); } woocommerce_order_review(); wp_die(); } add_action('wp_ajax_remove_cart_item', 'remove_cart_item_callback'); add_action('wp_ajax_nopriv_remove_cart_item', 'remove_cart_item_callback'); function remove_cart_item_callback() { $WC_Cart = new WC_Cart(); $WC_Cart->remove_cart_item( $_REQUEST['product_cart_id'] ); echo $_REQUEST['product_cart_id']; wp_die(); } add_filter( 'wc_stripe_payment_icons', 'change_my_icons' ); function change_my_icons( $icons ) { // var_dump( $icons ); to show all possible icons to change. $icons['visa'] = '
"; print_r( $variation ); echo "";*/ woocommerce_wp_text_input( array( 'id' => '_supplier_code[' . $variation->ID . ']', // id поля 'label' => 'Supplier code', // Надпись над полем //'description' => 'Укажи срок изготовления, просто цифры в днях',// Описание поля 'desc_tip' => 'false', // Всплывающая подсказка 'placeholder' => 'Supplier code', // Надпись внутри поля 'type' => 'text', // Тип поля /*'custom_attributes' => array( // Произвольные аттрибуты 'step' => 'any', // Шаг значений 'min' => '0', // Минимальное значение ),*/ 'value' => get_post_meta( $variation->ID, '_supplier_code', true ), ) ); } add_action( 'woocommerce_save_product_variation','save_supplier_code_barcode_variations',10,2); function save_supplier_code_barcode_variations($post_id) { $value = $_POST['_supplier_code'][$post_id]; if(!empty($value)) update_post_meta($post_id,'_supplier_code',sanitize_text_field($value)); } add_action('wp_ajax_get_product_gallery', 'get_product_gallery'); add_action('wp_ajax_nopriv_get_product_gallery', 'get_product_gallery'); function get_product_gallery() { //print_r($_POST); $product_id = $_POST['product_id']; $variation_id = $_POST['variation_id']; // Solving WPML issue $parent_variation_id = get_post_meta( $variation_id, '_wcml_duplicate_of_variation', true ); if( $parent_variation_id ) { $variation_id = $parent_variation_id; } $gallery = get_post_meta( $variation_id, 'rtwpvg_images' )[0]; if( count($gallery) == 0 ) { $meta = get_post_meta( $product_id ); $gallery = explode( ',', $meta['_product_image_gallery'][0] ); } $tags = showProductTags( $product_id ); $text .= ' '; echo $text; wp_die(); } add_action('wp_ajax_get_checkout_mini', 'get_checkout_mini_func'); add_action('wp_ajax_nopriv_get_checkout_mini', 'get_checkout_mini_func'); function get_checkout_mini_func() { $locale = $_POST['locale']; $locale = str_replace( '-', '_', $locale ); switch_to_locale( $locale ); //switch_to_locale('de-DE'); //switch_to_locale('en_US'); //define('WPLANG', $locale); woocommerce_order_review(); wp_die(); } add_action('wp_ajax_get_device_page', 'get_device_page_func'); add_action('wp_ajax_nopriv_get_device_page', 'get_device_page_func'); function get_device_page_func() { $device = $_POST['device']; $info = GetDeviceByTitle( $device ); $data = array( "url" => get_permalink( $info['ID'] ), ); echo json_encode( $data ); wp_die(); echo "
"; print_r( $info ); echo ""; } add_action( 'wp', 'force_404' ); function force_404() { global $wp_query; $pages = array( "/en/shop/", "/shop/", "/en/my-account/", "/mein-account/", //"/en/cart/", //"/einkaufswagen/", "/en/collections/", "/sammlung/", "/en/category/uncategorized/", "/category/unkategorisiert/", "/cart-2/", ); if( in_array( $_SERVER['REQUEST_URI'], $pages ) ){ status_header( 404 ); nocache_headers(); include( get_query_template( '404' ) ); die(); } } add_action( 'init', 'my_deregister_heartbeat', 1 ); function my_deregister_heartbeat() { global $pagenow; if ( 'post.php' != $pagenow && 'post-new.php' != $pagenow ) wp_deregister_script('heartbeat'); } add_action("woocommerce_order_status_changed", "shipping_notification"); function shipping_notification($order_id, $checkout=null) { global $woocommerce; $order = new WC_Order( $order_id ); if($order->has_status('shipping')) { $email_notifications = WC()->mailer()->get_emails(); $email_notifications['WC_Email_Customer_On_Hold_Order']->trigger( $order_id ); } } add_action( 'woocommerce_email_before_order_table', 'action_function_name_9642', 10, 4 ); function action_function_name_9642( $order, $sent_to_admin, $plain_text, $email ){ $dhl_track_number = get_field( 'dhl_track_number', $order->id ); if ($dhl_track_number != '') { $lang = get_post_meta( $order->id, 'wpml_language', true ); $site = get_site_url(); if ($lang == 'de') $ts = 'VERFOLGEN SIE IHRE SENDUNG'; else $ts = 'TRACK YOUR SHIPMENT'; if ($lang == 'de') echo '
DHL TRACKING #: '.$dhl_track_number.'
'.$ts.''; else echo 'DHL TRACKING #: '.$dhl_track_number.'
'.$ts.''; } } add_action( 'woocommerce_created_customer', function($user_id){ $count = wc_update_new_customer_past_orders( $user_id ); update_user_meta( $user_id, '_wc_linked_order_count', $count ); }); function custom_registration_redirect() { $redirection_url = get_permalink( wc_get_page_id( 'myaccount' ) ); return $redirection_url; } add_action('woocommerce_registration_redirect', 'custom_registration_redirect', 2); add_filter( 'wc_stripe_show_payment_request_on_checkout', '__return_true' ); /* function redirect_non_admin_user(){ if (!is_user_logged_in() && $_SERVER['PHP_SELF'] != '/wp-login.php') { wp_redirect('https://blackrock-mobile.com/home.html'); exit; } } add_action( 'init', 'redirect_non_admin_user' ); */ remove_action('wp_head', 'wp_generator'); /* function the_breadcrumb(){ // получаем номер текущей страницы $pageNum = ( get_query_var('paged') ) ? get_query_var('paged') : 1; $separator = ' » '; // » // если главная страница сайта if( is_front_page() ){ if( $pageNum > 1 ) { echo 'Главная' . $separator . $pageNum . '-я страница'; } else { echo 'Вы находитесь на главной странице'; } } else { // не главная echo 'Главная' . $separator; if( is_single() ){ // записи the_category(', '); echo $separator; the_title(); } elseif ( is_page() ){ // страницы WordPress the_title(); } elseif ( is_category() ) { single_cat_title(); } elseif( is_tag() ) { single_tag_title(); } elseif ( is_day() ) { // архивы (по дням) echo '' . get_the_time('Y') . '' . $separator; echo '' . get_the_time('F') . '' . $separator; echo get_the_time('d'); } elseif ( is_month() ) { // архивы (по месяцам) echo '' . get_the_time('Y') . '' . $separator; echo get_the_time('F'); } elseif ( is_year() ) { // архивы (по годам) echo get_the_time('Y'); } elseif ( is_author() ) { // архивы по авторам global $author; $userdata = get_userdata($author); echo 'Опубликовал(а) ' . $userdata->display_name; } elseif ( is_404() ) { // если страницы не существует echo 'Ошибка 404'; } if ( $pageNum > 1 ) { // номер текущей страницы echo ' (' . $pageNum . '-я страница)'; } } } */ /* Should have solved the "addind product to cart" issue but no need now, and not tested thoroughly */ /* if(remove_action('woocommerce_add_to_cart_validation', 'woocommerce_add_cart_item_data_custom',5)){ function my_woocommerce_add_cart_item_data_custom( $product_id, $quantity, $variation_id = '', $variation = array(), $cart_item_data = array() ) { $product_data = wc_get_product( $product_id ); $cart_item_data = (array) apply_filters( 'woocommerce_add_cart_item_data', $cart_item_data, $product_id, $variation_id ); $cart_id = WC()->cart->generate_cart_id( $product_id, $variation_id, $variation, $cart_item_data ); $cart_item_key = WC()->cart->find_product_in_cart( $cart_id ); return false; } add_filter( 'woocommerce_add_to_cart_validation', 'my_woocommerce_add_cart_item_data_custom', 5, 6); } */ add_filter( 'auto_update_plugin', '__return_false' ); function woocommerce_new_pass_redirect( $user ) { wp_redirect( wp_lostpassword_url().'?msg=1' ); exit; } add_action( 'woocommerce_customer_reset_password', 'woocommerce_new_pass_redirect' ); function woocommerce_new_pass_redirect2( $user ) { wp_redirect( wp_lostpassword_url().'?msg=1' ); exit; } add_action( 'user_registration_reset_password', 'woocommerce_new_pass_redirect2' ); add_filter( 'wc_order_statuses', 'wc_renaming_order_status' ); function wc_renaming_order_status( $order_statuses ) { foreach ( $order_statuses as $key => $status ) { if ( 'wc-completed' === $key && get_locale() != 'en_US') $order_statuses['wc-completed'] = _x( 'Abgeschlosen', 'Order status', 'woocommerce' ); } return $order_statuses; }