['mode' => 'production', 'region' => 'ru'], 'cosmopet.ae' => ['mode' => 'production', 'region' => 'ae'], 'cosmopet-test-dumb.cp.good-production.xyz' => ['mode' => 'develope', 'region' => 'ru'], 'cosmopet-test-ru.cp.good-production.xyz' => ['mode' => 'develope', 'region' => 'ru'], 'cosmopet-test-ae.cp.good-production.xyz' => ['mode' => 'develope', 'region' => 'ae'], ]; $host = strtolower($host ?: $_SERVER['SERVER_NAME']); $config = $map[$host] ?? ['mode' => 'develope', 'region' => 'unknown']; $this->site_mode = $config['mode']; $this->site_region = $config['region']; $this->is_gp_test_mode = (isset($_GET['gp-test']) && $_GET['gp-test'] == '1') || (is_user_logged_in() && current_user_can('administrator')); } } add_filter('timber/twig', function (\Twig\Environment $twig) { global $site_env; $twig->addGlobal('site_region', $site_env->site_region); $twig->addGlobal('site_env', $site_env); $twig->addGlobal('header_scripts', get_field('header_scripts', 'option')); return $twig; }); /* End | Работа с проверкой мультисайтовости и стендов */ add_filter('woocommerce_currency_symbol', function($currency_symbol, $currency) { return $currency === 'AED' ? 'AED' : $currency_symbol; }, 10, 2); add_filter('wpseo_canonical', '__return_false'); add_filter('wpseo_opengraph_url', '__return_false'); add_filter('wpseo_add_x_default_hreflang', '__return_false'); add_filter('wpseo_disable_adjacent_rel_links', '__return_true'); add_action('wp_head', function() { if (!is_admin()) { static $canonical_added = false; if ($canonical_added) return; $canonical_added = true; $current_url = strtok(trailingslashit(home_url($_SERVER['REQUEST_URI'])), '?'); echo '' . "\n"; } }); /** * Добавление событий контрибуции для FP Pixel * только на боевом сайте АЕ */ if ($site_env->site_mode == 'production' && $site_env->site_region == 'ae') { // Проверка на тестовый режим для метрик function is_gp_test_mode() { if (isset($_GET['gp-test']) && $_GET['gp-test'] == '1') { return true; } if (is_user_logged_in() && current_user_can('administrator')) { return true; } return false; } add_action('wp_footer', 'add_facebook_pixel_events'); function add_facebook_pixel_events() { if (is_gp_test_mode()) return; global $product; // 1. ViewContent if (is_product() && $product && $product->get_price() > 0) { ?> cart && WC()->cart->get_cart_contents_count() > 0) { ?> cart && WC()->cart->get_cart_contents_count() > 0) { $currency = get_woocommerce_currency(); $cart_total = WC()->cart->get_total('edit'); ?> get_status() !== 'processing' && $order->get_status() !== 'completed')) return; $items = []; foreach ($order->get_items() as $item) { $product = $item->get_product(); $items[] = [ 'item_id' => $product->get_id(), 'item_name' => $product->get_name(), 'price' => $product->get_price(), 'quantity' => $item->get_quantity() ]; } ?> get_status() !== 'processing' && $order->get_status() !== 'completed') return; $items = []; foreach ($order->get_items() as $item) { $product = $item->get_product(); $items[] = [ 'id' => $product->get_id(), 'name' => $product->get_name(), 'price' => $product->get_price(), 'quantity' => $item->get_quantity() ]; } $currency = $order->get_currency(); ?> site_mode === 'production' && $site_env->site_region === 'ae') { $show_pixel = true; } // Для тестовых стендов AE if ($site_env->site_mode === 'develope' && $site_env->site_region === 'ae') { $show_pixel = true; } // Дополнительные проверки $skip_tracking = false; // Исключаем админов if (current_user_can('administrator')) { $skip_tracking = true; } // Исключаем gp-test режим if ($site_env->is_gp_test_mode) { $skip_tracking = true; } // Исключаем если есть параметр gp-test=1 в URL if (isset($_GET['gp-test']) && $_GET['gp-test'] == '1') { $skip_tracking = true; } if ($show_pixel && !$skip_tracking) { $context = [ 'currency' => get_woocommerce_currency(), ]; // Определяем тип страницы и подготавливаем данные if (is_product()) { // Страница товара - ViewContent global $product; if ($product && $product instanceof WC_Product) { $context['pixel_event_type'] = 'ViewContent'; $context['product'] = [ 'id' => $product->get_id(), 'name' => $product->get_name(), 'price' => floatval($product->get_price()), 'sku' => $product->get_sku(), 'category' => wp_get_post_terms($product->get_id(), 'product_cat', ['fields' => 'names'])[0] ?? '', ]; } } elseif (is_checkout() && !is_order_received_page()) { // Страница чекаута - InitiateCheckout $context['pixel_event_type'] = 'InitiateCheckout'; if (WC()->cart && !WC()->cart->is_empty()) { $context['cart_total'] = floatval(WC()->cart->get_total('edit')); $context['cart_items'] = []; $context['content_ids'] = []; foreach (WC()->cart->get_cart() as $cart_item) { $product = $cart_item['data']; if ($product && $product instanceof WC_Product) { $item_data = [ 'item_id' => $product->get_id(), 'item_name' => $product->get_name(), 'price' => floatval($product->get_price()), 'quantity' => intval($cart_item['quantity']), 'category' => wp_get_post_terms($product->get_id(), 'product_cat', ['fields' => 'names'])[0] ?? '', ]; $context['cart_items'][] = $item_data; $context['content_ids'][] = $product->get_id(); } } } } elseif (is_order_received_page()) { // Страница благодарности - Purchase $order_id = get_query_var('order-received'); if ($order_id) { $order = wc_get_order($order_id); if ($order && $order instanceof WC_Order) { $context['pixel_event_type'] = 'Purchase'; $order_items = []; $content_ids = []; foreach ($order->get_items() as $item) { if ($item instanceof WC_Order_Item_Product) { $product = $item->get_product(); if ($product && $product instanceof WC_Product) { $order_items[] = [ 'item_id' => $product->get_id(), 'item_name' => $product->get_name(), 'price' => floatval($item->get_total() / $item->get_quantity()), 'quantity' => intval($item->get_quantity()), 'category' => wp_get_post_terms($product->get_id(), 'product_cat', ['fields' => 'names'])[0] ?? '', ]; $content_ids[] = $product->get_id(); } } } $context['order'] = [ 'id' => $order->get_id(), 'total' => floatval($order->get_total()), 'currency' => $order->get_currency(), 'items' => $order_items, 'content_ids' => $content_ids, 'order_key' => $order->get_order_key(), ]; } } } else { // Все остальные страницы - PageView + подготовка для AddToCart $context['pixel_event_type'] = 'PageView'; $context['enable_addtocart'] = true; // Включаем обработчик AddToCart // Дополнительные данные для PageView global $wp_query; $context['page_data'] = [ 'page_title' => wp_get_document_title(), 'page_url' => home_url(add_query_arg(array(), $wp_query->request)), 'page_type' => get_page_type(), ]; } // Рендерим шаблон \Timber\Timber::render('templates/head-pixel-functions.twig', $context); } });