Plugin::make( ServerOrders::class )->send( $payload ) ); if ( is_admin() ) { add_action( 'admin_menu', static function (): void { add_submenu_page( Menu::SLUG, __( 'Matomo', 'rahkar-toolkit' ), __( 'Matomo', 'rahkar-toolkit' ), Menu::CAPABILITY, SettingsPage::SLUG, static fn() => Plugin::make( SettingsPage::class )->render() ); }, 20 ); add_action( 'admin_init', static function (): void { if ( 'options-privacy.php' === ( $GLOBALS['pagenow'] ?? '' ) ) { self::policyText(); } } ); } // From `alloptions`, which WordPress has already fetched: deciding whether // to track must not cost a query. Spelled out, because reading // Config::OPTION would load that class on every request. $all = wp_load_alloptions(); if ( empty( $all['rahkar_wp_matomo'] ) ) { return; } add_action( 'woocommerce_checkout_order_created', static fn( $order ) => Orders::stamp( $order ) ); add_action( 'woocommerce_store_api_checkout_update_order_meta', static fn( $order ) => Orders::stamp( $order ) ); add_action( 'woocommerce_order_status_changed', static fn( $id ) => ServerOrders::queue( (int) $id ), 30 ); add_filter( 'woocommerce_add_to_cart_fragments', static fn( $fragments ) => Tracker::fragments( $fragments ) ); add_action( 'wc_ajax_rahkar_matomo_cart', static fn() => Tracker::ajaxCart() ); if ( ! is_admin() ) { add_action( 'wp_footer', static fn() => Plugin::make( Tracker::class )->footer(), 20 ); } } /** * Suggested privacy-policy text. */ private static function policyText(): void { if ( ! function_exists( 'wp_add_privacy_policy_content' ) ) { return; } wp_add_privacy_policy_content( __( 'آمار بازدید (Matomo)', 'rahkar-toolkit' ), wp_kses_post( '
' . __( 'این فروشگاه بازدیدها را با Matomo، روی سروری که فروشگاه انتخاب کرده، میشمارد. Matomo کوکیهایی با نام _pk_id و _pk_ses میگذارد که یک شناسهی تصادفی برای مرورگر شما دارند، و این سایت کوکی rk_mtm_stage را برای ۳۰ دقیقه نگه میدارد تا بداند بازدید تا کدام مرحلهی خرید رسیده است.', 'rahkar-toolkit' ) . '
' . '' . __( 'برای هر بازدید، نشانی صفحه، صفحهی ارجاعدهنده، نوع مرورگر و اندازهی صفحهنمایش، IP (که Matomo بخشی از آن را پنهان میکند)، محصول و دستهی دیدهشده، سبد خرید، عبارت جستوجو و سفارش فرستاده میشود. اگر وارد حساب خود شده باشید، شناسهی عددی حساب هم میرود، نه نام، موبایل یا ایمیل. عبارت جستوجویی که شبیه موبایل یا ایمیل باشد فرستاده نمیشود.', 'rahkar-toolkit' ) . '
' . '' . __( 'سفارشها از سرور فروشگاه هم به Matomo فرستاده میشوند، با اقلام، مبلغها و شناسهی همان مرورگر، تا سفارشی که صفحهی تشکرش دیده نشد هم شمرده شود.', 'rahkar-toolkit' ) . '
' ) ); } }