" $url,\n\t\t\t'time' => microtime( true ),\n\t\t\t'to' => isset( $args['timeout'] ) ? $args['timeout'] : 'default',\n\t\t);\n\t\treturn $pre;\n\t}, 1, 3 );\n\n\tadd_filter( 'http_response', function( $response, $args, $url ) {\n\t\tforeach ( (array) $GLOBALS['atx_http_start'] as $k => $v ) {\n\t\t\tif ( $v['url'] === $url ) {\n\t\t\t\t$GLOBALS['atx_http_calls'][] = array(\n\t\t\t\t\t'url' => substr( $url, 0, 140 ),\n\t\t\t\t\t'sec' => round( microtime( true ) - $v['time'], 2 ),\n\t\t\t\t\t'timeout_setting' => $v['to'],\n\t\t\t\t);\n\t\t\t\tunset( $GLOBALS['atx_http_start'][ $k ] );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn $response;\n\t}, 1, 3 );\n\n\tadd_action( 'shutdown', function() {\n\t\tforeach ( (array) ( $GLOBALS['atx_http_start'] ?? array() ) as $v ) {\n\t\t\t$GLOBALS['atx_http_calls'][] = array(\n\t\t\t\t'url' => substr( $v['url'], 0, 140 ),\n\t\t\t\t'sec' => round( microtime( true ) - $v['time'], 2 ),\n\t\t\t\t'note' => '\u26a0\ufe0f NO http_response (blocked or error) \u2014 timeout=' . $v['to'],\n\t\t\t);\n\t\t}\n\t} );\n\n\tadd_filter( 'http_request_args', function( $args, $url ) {\n\t\tif ( empty( $args['timeout'] ) || $args['timeout'] > 5 ) {\n\t\t\t$args['timeout'] = 5;\n\t\t}\n\t\tif ( empty( $args['connect_timeout'] ) || $args['connect_timeout'] > 5 ) {\n\t\t\t$args['connect_timeout'] = 5;\n\t\t}\n\t\tif ( preg_match( '\/\\.ir($|\\\/|:)\/i', (string) parse_url( $url, PHP_URL_HOST ) ) ) {\n\t\t\t$args['timeout'] = 3;\n\t\t\t$args['connect_timeout'] = 2;\n\t\t\t$args['blocking'] = true;\n\t\t}\n\t\treturn $args;\n\t}, 1, 2 );\n\n\tadd_action( 'all', function() {\n\t\t$name = current_filter();\n\t\tif ( ! $name || $name === 'all' ) return;\n\t\t$GLOBALS['atx_stack'][] = array( 'n' => $name, 't' => microtime( true ) );\n\t}, -2147483648 );\n\n\tadd_action( 'all', function() {\n\t\t$frame = array_pop( $GLOBALS['atx_stack'] );\n\t\tif ( ! $frame ) return;\n\t\t$d = microtime( true ) - $frame['t'];\n\t\tif ( $d < 0.05 ) return;\n\t\t$n = $frame['n'];\n\t\tif ( ! isset( $GLOBALS['atx_hooks'][ $n ] ) ) {\n\t\t\t$GLOBALS['atx_hooks'][ $n ] = array( 'total' => 0.0, 'count' => 0, 'max' => 0.0 );\n\t\t}\n\t\t$GLOBALS['atx_hooks'][ $n ]['total'] += $d;\n\t\t$GLOBALS['atx_hooks'][ $n ]['count']++;\n\t\t$GLOBALS['atx_hooks'][ $n ]['max'] = max( $GLOBALS['atx_hooks'][ $n ]['max'], $d );\n\t}, 2147483647 );\n\n\tadd_action( 'shutdown', function() {\n\t\tif ( php_sapi_name() === 'cli' ) return;\n\t\tif ( defined( 'REST_REQUEST' ) && REST_REQUEST ) return;\n\t\tif ( wp_doing_ajax() ) return;\n\t\tif ( wp_is_json_request() ) return;\n\t\tif ( wp_is_jsonp_request() ) return;\n\n\t\t$uri = isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : '?';\n\t\tif ( strpos( $uri, 'wp-admin' ) !== false || strpos( $uri, 'wp-login' ) !== false ) return;\n\t\tif ( strpos( $uri, 'wp-json' ) !== false || strpos( $uri, 'rest_route' ) !== false ) return;\n\t\tif ( strpos( $uri, 'admin-ajax' ) !== false || strpos( $uri, 'admin-post' ) !== false ) return;\n\t\tif ( isset( $_GET['atx_off'] ) ) return;\n\t\tif ( isset( $_GET['atareh_run'] ) ) return;\n\n\t\t$hooks = (array) $GLOBALS['atx_hooks'];\n\t\tuasort( $hooks, function( $a, $b ) { return $b['total'] <=> $a['total']; } );\n\t\t$agg = array();\n\t\tforeach ( array_slice( $hooks, 0, 12, true ) as $n => $v ) {\n\t\t\t$agg[] = array( 'hook' => $n, 'total' => round( $v['total'], 2 ), 'count' => $v['count'], 'max' => round( $v['max'], 2 ) );\n\t\t}\n\n\t\t$http = (array) ( $GLOBALS['atx_http_calls'] ?? array() );\n\t\tusort( $http, function( $a, $b ) { return $b['sec'] <=> $a['sec']; } );\n\t\t$http = array_slice( $http, 0, 15 );\n\n\t\t$report = array(\n\t\t\t'generated' => gmdate( 'Y-m-d H:i:s' ),\n\t\t\t'url' => $uri,\n\t\t\t'total_page_sec' => round( microtime( true ) - ( $_SERVER['REQUEST_TIME_FLOAT'] ?? time() ), 2 ),\n\t\t\t'since_boot_sec' => round( microtime( true ) - $GLOBALS['atx_t0'], 2 ),\n\t\t\t'PHASES' => $GLOBALS['atx_phase'],\n\t\t\t'peak_memory_mb' => round( memory_get_peak_usage( true ) \/ 1048576, 1 ),\n\t\t\t'TOP_SLOW_HOOKS' => $agg,\n\t\t\t'OUTGOING_HTTP' => $http,\n\t\t\t'php_version' => PHP_VERSION,\n\t\t);\n\n\t\tif ( isset( $_GET['atx'] ) ) {\n\t\t\tglobal $wpdb;\n\t\t\t$queries = isset( $wpdb->queries ) ? (array) $wpdb->queries : array();\n\t\t\t$total_sql = 0.0;\n\t\t\tforeach ( $queries as $q ) { $total_sql += isset( $q[1] ) ? (float) $q[1] : 0; }\n\t\t\tusort( $queries, function( $a, $b ) { return ( $b[1] ?? 0 ) <=> ( $a[1] ?? 0 ); } );\n\t\t\t$slow_sql = array();\n\t\t\tforeach ( array_slice( $queries, 0, 12 ) as $q ) {\n\t\t\t\t$slow_sql[] = array(\n\t\t\t\t\t'sec' => round( (float) ( $q[1] ?? 0 ), 3 ),\n\t\t\t\t\t'sql' => substr( preg_replace( '\/\\s+\/', ' ', (string) ( $q[0] ?? '' ) ), 0, 200 ),\n\t\t\t\t);\n\t\t\t}\n\t\t\t$report['num_queries'] = count( $queries );\n\t\t\t$report['total_sql_sec'] = round( $total_sql, 2 );\n\t\t\t$report['SLOW_SQL'] = $slow_sql;\n\t\t}\n\n\t\t$json = wp_json_encode( $report, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );\n\n\t\tif ( ! headers_sent() ) {\n\t\t\theader( 'X-Atareh-Diag-Total: ' . $report['total_page_sec'] . 's' );\n\t\t}\n\n\t\terror_log( 'ATAREH_DIAG ' . $json );\n\n\t\t$dir = wp_upload_dir();\n\t\tif ( ! empty( $dir['basedir'] ) && wp_is_writable( $dir['basedir'] ) ) {\n\t\t\t@file_put_contents( $dir['basedir'] . '\/atareh-diag.log', $json . \"\\n\\n\", FILE_APPEND );\n\t\t}\n\t}, 99999 );\n}\n\n\/\/ ============================================================================\n\/\/ \u0628\u062e\u0634 \u06f2 \u2014 \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u0631\u06af\u0628\u0627\u0631 \u0647\u0646\u06af\u0627\u0645 \u0630\u062e\u06cc\u0631\u0647\n\/\/ ============================================================================\nadd_action( 'shutdown', function() {\n\t$e = error_get_last();\n\tif ( ! $e ) return;\n\tif ( ! in_array( $e['type'], array( E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR ), true ) ) return;\n\t$uri = isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : '?';\n\tif ( strpos( $uri, 'post.php' ) === false && strpos( $uri, 'wp-json' ) === false && strpos( $uri, 'rest_route' ) === false ) return;\n\t$line = sprintf( \"[FATAL] %s | %s in %s:%d\\n\", gmdate( 'Y-m-d H:i:s' ), $e['message'], $e['file'], $e['line'] );\n\terror_log( 'ATAREH_SAVE_ERROR ' . $line );\n\t$dir = wp_upload_dir();\n\tif ( ! empty( $dir['basedir'] ) ) {\n\t\t@file_put_contents( $dir['basedir'] . '\/atareh-save-errors.log', $line, FILE_APPEND );\n\t}\n} );\n\n\/\/ ============================================================================\n\/\/ \u0628\u062e\u0634 \u06f3 \u2014 \u0641\u06cc\u06a9\u0633 Schema \u0645\u062d\u0635\u0648\u0644 (\u062f\u0627\u0626\u0645\u06cc)\n\/\/ ============================================================================\nadd_filter( 'woocommerce_schema_product_price_valid_until_date', function( $date ) {\n\treturn gmdate( 'Y-m-d', strtotime( '+365 days' ) );\n} );\n\nadd_filter( 'woocommerce_structured_data_product', function( $markup, $product ) {\n\tif ( ! $product instanceof WC_Product ) return $markup;\n\t$markup['brand'] = array( '@type' => 'Brand', 'name' => '\u0639\u0637\u0627\u0631\u0647 \u06af\u0627\u0644\u0631\u06cc' );\n\t$sku = $product->get_sku();\n\tif ( empty( $sku ) ) $sku = 'ATG-' . str_pad( (string) $product->get_id(), 5, '0', STR_PAD_LEFT );\n\t$markup['sku'] = $sku;\n\t$markup['mpn'] = $sku;\n\t$rating_count = (int) $product->get_rating_count();\n\t$average = (float) $product->get_average_rating();\n\tif ( $rating_count > 0 && $average > 0 ) {\n\t\t$markup['aggregateRating'] = array( '@type' => 'AggregateRating', 'ratingValue' => round( $average, 1 ), 'reviewCount' => $rating_count, 'bestRating' => 5, 'worstRating' => 1 );\n\t} else {\n\t\tunset( $markup['aggregateRating'] );\n\t}\n\tif ( isset( $markup['offers'] ) && isset( $markup['offers']['@type'] ) && $markup['offers']['@type'] !== 'AggregateOffer' ) {\n\t\t$markup['offers']['priceCurrency'] = 'IRR';\n\t}\n\treturn $markup;\n}, 20, 2 );\n\nadd_filter( 'rank_math\/json_ld', function( $data ) {\n\tif ( ! is_array( $data ) ) return $data;\n\t$brand = array( '@type' => 'Brand', 'name' => '\u0639\u0637\u0627\u0631\u0647 \u06af\u0627\u0644\u0631\u06cc' );\n\t$future = gmdate( 'Y-m-d', strtotime( '+365 days' ) );\n\tforeach ( $data as $key => $node ) {\n\t\tif ( ! is_array( $node ) ) continue;\n\t\t$type = isset( $node['@type'] ) ? $node['@type'] : '';\n\t\t$types = is_array( $type ) ? $type : array( $type );\n\t\tif ( ! in_array( 'Product', $types, true ) ) continue;\n\t\tif ( empty( $node['brand'] ) ) $data[ $key ]['brand'] = $brand;\n\t\tif ( empty( $node['sku'] ) && function_exists( 'wc_get_product' ) ) {\n\t\t\t$pid = url_to_postid( isset( $node['url'] ) ? $node['url'] : '' );\n\t\t\tif ( $pid ) {\n\t\t\t\t$p = wc_get_product( $pid );\n\t\t\t\t$sku = $p ? $p->get_sku() : '';\n\t\t\t\tif ( empty( $sku ) ) $sku = 'ATG-' . str_pad( (string) $pid, 5, '0', STR_PAD_LEFT );\n\t\t\t\t$data[ $key ]['sku'] = $sku;\n\t\t\t\tif ( empty( $node['mpn'] ) ) $data[ $key ]['mpn'] = $sku;\n\t\t\t\tif ( $p && empty( $node['aggregateRating'] ) ) {\n\t\t\t\t\t$cnt = (int) $p->get_rating_count();\n\t\t\t\t\t$avg = (float) $p->get_average_rating();\n\t\t\t\t\tif ( $cnt > 0 && $avg > 0 ) {\n\t\t\t\t\t\t$data[ $key ]['aggregateRating'] = array( '@type' => 'AggregateRating', 'ratingValue' => round( $avg, 1 ), 'reviewCount' => $cnt, 'bestRating' => 5, 'worstRating' => 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif ( isset( $node['offers'] ) ) {\n\t\t\t$offers = $node['offers'];\n\t\t\tif ( isset( $offers['@type'] ) ) {\n\t\t\t\t$pvu = isset( $offers['priceValidUntil'] ) ? $offers['priceValidUntil'] : '';\n\t\t\t\tif ( empty( $pvu ) || $pvu <= gmdate( 'Y-m-d' ) ) $data[ $key ]['offers']['priceValidUntil'] = $future;\n\t\t\t} else {\n\t\t\t\tforeach ( (array) $offers as $i => $o ) {\n\t\t\t\t\tif ( ! is_array( $o ) ) continue;\n\t\t\t\t\t$pvu = isset( $o['priceValidUntil'] ) ? $o['priceValidUntil'] : '';\n\t\t\t\t\tif ( empty( $pvu ) || $pvu <= gmdate( 'Y-m-d' ) ) $data[ $key ]['offers'][ $i ]['priceValidUntil'] = $future;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn $data;\n}, 99 );\n\n\/\/ ============================================================================\n\/\/ \u0628\u062e\u0634 \u06f4 \u2014 \u0631\u0628\u0627\u062a\u200c\u0647\u0627: \u062f\u0633\u062a\u0647\u200c\u0647\u0627 index + \u0635\u0641\u062d\u0627\u062a \u0634\u0645\u0627\u0631\u0647\u200c\u062f\u0627\u0631 noindex\n\/\/ ============================================================================\nadd_filter( 'rank_math\/frontend\/robots', function( $robots ) {\n\tif ( is_paged() ) {\n\t\tunset( $robots['index'] );\n\t\t$robots['noindex'] = 'noindex';\n\t\treturn $robots;\n\t}\n\tif ( is_product_category() || is_product_tag() ) {\n\t\tunset( $robots['noindex'] );\n\t\t$robots['index'] = 'index';\n\t}\n\treturn $robots;\n} );\n\n\/\/ ============================================================================\n\/\/ \u0628\u062e\u0634 \u06f5 \u2014 \u0628\u0633\u062a\u0646 \u062a\u0644\u0647\u200c\u0645\u062a\u0631\u06cc \u0627\u06cc\u0631\u0627\u0646\u06cc\n\/\/ ============================================================================\nadd_filter( 'pre_http_request', function( $pre, $args, $url ) {\n\t$host = (string) wp_parse_url( $url, PHP_URL_HOST );\n\tif ( $host && preg_match( '\/(?:^|\\.)(xcart\\.ir|basalam\\.com|torob\\.com)$\/i', $host ) ) {\n\t\treturn new WP_Error( 'atx_blocked', '\u0645\u0633\u062f\u0648\u062f \u0634\u062f \u062a\u0648\u0633\u0637 Atareh SEO: ' . $host, array( 'status' => 200, 'body' => '' ) );\n\t}\n\treturn $pre;\n}, 5, 3 );\n\n\/\/ ============================================================================\n\/\/ \u0628\u062e\u0634 \u06f6 \u2014 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a\u200c\u0647\u0627\u06cc \u062f\u0627\u0626\u0645\u06cc \u06f3\u06f0\u06f1\n\/\/ ============================================================================\nadd_action( 'template_redirect', function() {\n\t$uri = isset( $_SERVER['REQUEST_URI'] ) ? (string) $_SERVER['REQUEST_URI'] : '';\n\n\t\/\/ \u0628\u0631\u0686\u0633\u0628 \u062e\u0627\u0644\u06cc\u200c\u0634\u062f\u0647 \u0633\u06cc\u06af\u0646\u062a \u2192 \u062f\u0633\u062a\u0647 \u0633\u06cc\u06af\u0646\u062a\n\tif ( preg_match( '#^\/product-tag\/signet(\/|$|\\?)#', $uri ) ) {\n\t\twp_redirect( 'https:\/\/atarehgallery.com\/product-category\/rings\/signet-ring\/', 301 );\n\t\texit;\n\t}\n\n\t\/\/ \/shop\/ \u0645\u0631\u062f\u0647 \u2192 \u062e\u0627\u0646\u0647\n\tif ( preg_match( '#^\/shop(\/|$|\\?)#', $uri ) ) {\n\t\twp_redirect( 'https:\/\/atarehgallery.com\/', 301 );\n\t\texit;\n\t}\n}, 1 );\n\n\/\/ ============================================================================\n\/\/ \u0628\u062e\u0634 \u06f7 \u2014 H1 \u0622\u0631\u0634\u06cc\u0648\u0647\u0627\u06cc \u062f\u0633\u062a\u0647\/\u0628\u0631\u0686\u0633\u0628 (\u062a\u0645 \u0627\u0644\u0627\u0646 H1 \u0646\u0645\u06cc\u200c\u0633\u0627\u0632\u062f)\n\/\/ ============================================================================\nadd_action( 'woocommerce_archive_description', function() {\n\tif ( ! ( is_product_category() || is_product_tag() ) ) return;\n\t$term = get_queried_object();\n\tif ( ! $term || empty( $term->name ) ) return;\n\techo '
' . esc_html( $term->name ) . '<\/h1>';\n}, 1 );\n\n\/\/ ============================================================================\n\/\/ \u0628\u062e\u0634 \u06f1\u06f0 \u2014 \u0645\u0647\u0627\u062c\u0631\u062a\u200c\u0647\u0627 \u0648 \u0648\u0638\u0627\u06cc\u0641 (\u0642\u0641\u0644 \u0628\u0627 \u06a9\u0644\u06cc\u062f)\n\/\/ ============================================================================\nadd_action( 'init', function() {\n\tif ( ! isset( $_GET['atareh_run'] ) ) return;\n\tif ( ! isset( $_GET['atareh_key'] ) || $_GET['atareh_key'] !== ATAREH_MIG_KEY ) return;\n\n\t$task = (string) $_GET['atareh_run'];\n\t$log = array( 'task' => $task, 'time' => gmdate( 'Y-m-d H:i:s' ) );\n\n\t\/\/ \u2500\u2500 \u0633\u0626\u0648\u06cc \u062f\u0633\u062a\u0647\u200c\u0647\u0627 \u062f\u0631 \u0631\u0646\u06a9\u200c\u0645\u062b \u2500\u2500\n\tif ( 'termseo' === $task ) {\n\t\t$terms = array(\n\t\t\t237 => array( '\u062e\u0631\u06cc\u062f \u0628\u0646\u06af\u0644 \u0646\u0642\u0631\u0647 \u06f9\u06f2\u06f5 | \u062f\u0633\u062a\u0628\u0646\u062f \u0628\u0646\u06af\u0644 \u0632\u0646\u0627\u0646\u0647 \u0648 \u0645\u0631\u062f\u0627\u0646\u0647 | \u0639\u0637\u0627\u0631\u0647 \u06af\u0627\u0644\u0631\u06cc', '\u062e\u0631\u06cc\u062f \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0628\u0646\u06af\u0644 \u0646\u0642\u0631\u0647 \u0639\u06cc\u0627\u0631 \u06f9\u06f2\u06f5 \u0628\u0627 \u0637\u0631\u0627\u062d\u06cc \u0645\u06cc\u0646\u06cc\u0645\u0627\u0644 \u0648 \u0637\u0631\u062d\u200c\u062f\u0627\u0631\u061b \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0633\u0627\u06cc\u0632 \u0628\u0646\u06af\u0644\u060c \u062a\u0641\u0627\u0648\u062a \u0622\u0646 \u0628\u0627 \u062f\u0633\u062a\u0628\u0646\u062f \u0648 \u0646\u06a9\u0627\u062a \u0646\u06af\u0647\u062f\u0627\u0631\u06cc. \u0633\u0627\u062e\u062a \u062f\u0633\u062a\u0633\u0627\u0632 \u0648 \u0627\u0631\u0633\u0627\u0644 \u0627\u0632 \u062a\u0647\u0631\u0627\u0646.' ),\n\t\t\t238 => array( '\u0627\u0646\u06af\u0634\u062a\u0631 \u0633\u06cc\u06af\u0646\u062a \u0646\u0642\u0631\u0647 \u0645\u0631\u062f\u0627\u0646\u0647 | \u062e\u0631\u06cc\u062f \u0633\u06cc\u06af\u0646\u062a \u0628\u0627 \u062d\u06a9\u0627\u06a9\u06cc \u062f\u0633\u062a\u06cc | \u0639\u0637\u0627\u0631\u0647 \u06af\u0627\u0644\u0631\u06cc', '\u062e\u0631\u06cc\u062f \u0627\u0646\u06af\u0634\u062a\u0631 \u0633\u06cc\u06af\u0646\u062a \u0646\u0642\u0631\u0647 \u06f9\u06f2\u06f5 \u0645\u0631\u062f\u0627\u0646\u0647 \u0628\u0627 \u062d\u06a9\u0627\u06a9\u06cc \u062f\u0633\u062a\u06cc\u061b \u062a\u0641\u0627\u0648\u062a \u0633\u06cc\u06af\u0646\u062a \u0628\u0627 \u0627\u0646\u06af\u0634\u062a\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0648 \u0633\u0627\u06cc\u0632. \u0645\u0646\u0627\u0633\u0628 \u0647\u062f\u06cc\u0647 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0631\u0648\u0632\u0645\u0631\u0647.' ),\n\t\t\t76 => array( '\u062e\u0631\u06cc\u062f \u0627\u0646\u06af\u0634\u062a\u0631 \u0646\u0642\u0631\u0647 \u06f9\u06f2\u06f5 \u0632\u0646\u0627\u0646\u0647 \u0648 \u0645\u0631\u062f\u0627\u0646\u0647 | \u0639\u0637\u0627\u0631\u0647 \u06af\u0627\u0644\u0631\u06cc', '\u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u0646\u06af\u0634\u062a\u0631\u0647\u0627\u06cc \u0646\u0642\u0631\u0647 \u0639\u06cc\u0627\u0631 \u06f9\u06f2\u06f5 \u062f\u0633\u062a\u0633\u0627\u0632: \u0627\u0646\u06af\u0634\u062a\u0631 \u0627\u0633\u0645\u060c \u0633\u06cc\u06af\u0646\u062a\u060c \u0646\u06af\u06cc\u0646\u200c\u062f\u0627\u0631 \u0648 \u0645\u06cc\u0646\u06cc\u0645\u0627\u0644 \u0632\u0646\u0627\u0646\u0647 \u0648 \u0645\u0631\u062f\u0627\u0646\u0647. \u0633\u0627\u062e\u062a \u0633\u0641\u0627\u0631\u0634\u06cc \u0648 \u0627\u0631\u0633\u0627\u0644 \u0627\u0632 \u062a\u0647\u0631\u0627\u0646.' ),\n\t\t\t78 => array( '\u062e\u0631\u06cc\u062f \u062f\u0633\u062a\u0628\u0646\u062f \u0646\u0642\u0631\u0647 \u06f9\u06f2\u06f5 | \u062f\u0633\u062a\u0628\u0646\u062f \u0632\u0646\u0627\u0646\u0647 \u0648 \u0645\u0631\u062f\u0627\u0646\u0647 \u0646\u0642\u0631\u0647 | \u0639\u0637\u0627\u0631\u0647 \u06af\u0627\u0644\u0631\u06cc', '\u062e\u0631\u06cc\u062f \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u062f\u0633\u062a\u0628\u0646\u062f \u0646\u0642\u0631\u0647 \u0639\u06cc\u0627\u0631 \u06f9\u06f2\u06f5: \u0628\u0646\u06af\u0644\u060c \u062f\u0633\u062a\u0628\u0646\u062f \u0627\u0633\u0645\u060c \u0627\u062b\u0631 \u0627\u0646\u06af\u0634\u062a \u0648 \u0632\u0646\u062c\u06cc\u0631\u06cc \u0632\u0646\u0627\u0646\u0647 \u0648 \u0645\u0631\u062f\u0627\u0646\u0647. \u0637\u0631\u0627\u062d\u06cc \u062f\u0633\u062a\u0633\u0627\u0632 \u0628\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0633\u0641\u0627\u0631\u0634\u06cc\u200c\u0633\u0627\u0632\u06cc.' ),\n\t\t\t77 => array( '\u062e\u0631\u06cc\u062f \u06af\u0631\u062f\u0646\u0628\u0646\u062f \u0648 \u0622\u0648\u06cc\u0632 \u0646\u0642\u0631\u0647 \u06f9\u06f2\u06f5 | \u0639\u0637\u0627\u0631\u0647 \u06af\u0627\u0644\u0631\u06cc', '\u0645\u062c\u0645\u0648\u0639\u0647 \u06af\u0631\u062f\u0646\u0628\u0646\u062f \u0648 \u0622\u0648\u06cc\u0632 \u0646\u0642\u0631\u0647 \u062f\u0633\u062a\u0633\u0627\u0632: \u0622\u0648\u06cc\u0632 \u0627\u0633\u0645\u060c \u062f\u0631\u0641\u0634 \u06a9\u0627\u0648\u06cc\u0627\u0646\u06cc\u060c \u0641\u0631\u0648\u0647\u0631 \u0648 \u0637\u0631\u062d\u200c\u0647\u0627\u06cc \u0627\u06cc\u0631\u0627\u0646\u06cc \u0628\u0627 \u0645\u06cc\u0646\u0627\u06a9\u0627\u0631\u06cc. \u0646\u0642\u0631\u0647 \u0639\u06cc\u0627\u0631 \u06f9\u06f2\u06f5 \u0648 \u0627\u0631\u0633\u0627\u0644 \u0627\u0632 \u062a\u0647\u0631\u0627\u0646.' ),\n\t\t\t86 => array( '\u062e\u0631\u06cc\u062f \u062f\u06a9\u0645\u0647 \u0633\u0631\u062f\u0633\u062a \u0646\u0642\u0631\u0647 | \u062f\u06a9\u0645\u0647 \u0633\u0631\u062f\u0633\u062a \u0645\u0631\u062f\u0627\u0646\u0647 \u0628\u0627 \u062d\u06a9\u0627\u06a9\u06cc | \u0639\u0637\u0627\u0631\u0647 \u06af\u0627\u0644\u0631\u06cc', '\u062e\u0631\u06cc\u062f \u062f\u06a9\u0645\u0647 \u0633\u0631\u062f\u0633\u062a \u0646\u0642\u0631\u0647 \u0639\u06cc\u0627\u0631 \u06f9\u06f2\u06f5 \u0645\u0631\u062f\u0627\u0646\u0647 \u0628\u0627 \u062d\u06a9\u0627\u06a9\u06cc \u062d\u0631\u0648\u0641 \u0648 \u0637\u0631\u062d \u0633\u0641\u0627\u0631\u0634\u06cc\u061b \u0645\u0646\u0627\u0633\u0628 \u0647\u062f\u06cc\u0647 \u0631\u0633\u0645\u06cc \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0631\u0648\u0632\u0645\u0631\u0647. \u0633\u0627\u062e\u062a \u062f\u0633\u062a\u0633\u0627\u0632 \u062f\u0631 \u062a\u0647\u0631\u0627\u0646.' ),\n\t\t\t199 => array( '\u06af\u0627\u0644\u0631\u06cc \u0627\u0633\u0645\u200c\u0647\u0627 | \u0632\u06cc\u0648\u0631\u0622\u0644\u0627\u062a \u0646\u0642\u0631\u0647 \u0628\u0627 \u0627\u0633\u0645 \u0634\u0645\u0627 | \u0639\u0637\u0627\u0631\u0647 \u06af\u0627\u0644\u0631\u06cc', '\u0627\u0646\u06af\u0634\u062a\u0631\u060c \u06af\u0631\u062f\u0646\u0628\u0646\u062f\u060c \u062f\u0633\u062a\u0628\u0646\u062f \u0648 \u0633\u0646\u062c\u0627\u0642 \u0633\u06cc\u0646\u0647 \u0646\u0642\u0631\u0647 \u0628\u0627 \u062a\u0627\u06cc\u067e\u0648\u06af\u0631\u0627\u0641\u06cc \u0627\u0633\u0645 \u062f\u0644\u062e\u0648\u0627\u0647 \u0634\u0645\u0627\u061b \u0628\u06cc\u0634 \u0627\u0632 \u0635\u062f\u0647\u0627 \u0637\u0631\u062d \u062f\u0633\u062a\u0633\u0627\u0632 \u0646\u0642\u0631\u0647 \u06f9\u06f2\u06f5 \u0628\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0633\u0641\u0627\u0631\u0634 \u0646\u0627\u0645 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc.' ),\n\t\t);\n\t\tforeach ( $terms as $id => $td ) {\n\t\t\tupdate_term_meta( $id, 'rank_math_title', $td[0] );\n\t\t\tupdate_term_meta( $id, 'rank_math_description', $td[1] );\n\t\t}\n\t\t$log['terms'] = array_keys( $terms );\n\t}\n\n\t\/\/ \u2500\u2500 \u062c\u0627\u0628\u0647\u200c\u062c\u0627\u06cc\u06cc \u0627\u0641\u0632\u0648\u0646\u0647 \u0645\u0627 \u0628\u0647 \u0627\u0648\u0644 \u0635\u0641 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc (\u0628\u0631\u0627\u06cc \u062a\u0634\u062e\u06cc\u0635) \u2500\u2500\n\tif ( 'reorder' === $task ) {\n\t\t$ap = get_option( 'active_plugins', array() );\n\t\t$me = 'atareh-seo-fixes\/atareh-seo-fixes.php';\n\t\tif ( in_array( $me, $ap, true ) ) {\n\t\t\t$ap = array_values( array_diff( $ap, array( $me ) ) );\n\t\t\tarray_unshift( $ap, $me );\n\t\t\tupdate_option( 'active_plugins', $ap );\n\t\t\t$log['first_now'] = $me;\n\t\t}\n\t\t$log['order'] = array_map( 'dirname', $ap );\n\t}\n\n\t\/\/ \u2500\u2500 \u062e\u0627\u0645\u0648\u0634\/\u0631\u0648\u0634\u0646 \u0645\u0648\u0642\u062a XCart \u0628\u0631\u0627\u06cc \u062a\u0634\u062e\u06cc\u0635 (\u0628\u0631\u06af\u0634\u062a\u200c\u067e\u0630\u06cc\u0631) \u2500\u2500\n\tif ( 'xoff' === $task || 'xon' === $task ) {\n\t\t$ap = get_option( 'active_plugins', array() );\n\t\tif ( 'xoff' === $task ) {\n\t\t\tupdate_option( 'atareh_active_backup', $ap );\n\t\t\t$ap = array_values( array_filter( $ap, function ( $p ) { return false === stripos( (string) $p, 'xcart' ); } ) );\n\t\t\tupdate_option( 'active_plugins', $ap );\n\t\t\t$log['xcart'] = 'removed';\n\t\t} else {\n\t\t\t$bk = get_option( 'atareh_active_backup', array() );\n\t\t\tif ( $bk ) {\n\t\t\t\tupdate_option( 'active_plugins', $bk );\n\t\t\t\t$log['xcart'] = 'restored';\n\t\t\t} else {\n\t\t\t\t$log['xcart'] = 'no backup found';\n\t\t\t}\n\t\t}\n\t\t$log['active_count'] = count( get_option( 'active_plugins', array() ) );\n\t}\n\n\twp_die( '' . esc_html( wp_json_encode( $log, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE ) ) . '<\/pre>', 'Atareh', array( 'response' => 200 ) );\n}, 99 );\n\n\n\/\/ ============================================================================\n\/\/ \u0628\u062e\u0634 \u06f1\u06f1 \u2014 \u0641\u06cc\u06a9\u0633 \u0633\u0631\u0639\u062a: \u0647\u0646\u06af \u06f6\u06f0 \u062b\u0627\u0646\u06cc\u0647\u200c\u0627\u06cc \u0645\u0627\u0698\u0648\u0644 Media \u0644\u0627\u06cc\u062a\u200c\u0627\u0633\u067e\u06cc\u062f + \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u0631\u062f\u0647\u0654 xcart.ir\n\/\/ ============================================================================\nadd_filter( 'litespeed_media_ignore_remote_missing_sizes', '__return_true' );\nadd_filter( 'pre_http_request', function( $pre, $args, $url ) {\n\tif ( preg_match( '#^https?:\/\/([a-z0-9.-]+\\.)?xcart\\.ir(\/|$)#i', $url ) ) {\n\t\treturn new WP_Error( 'atareh_blocked', 'xcart.ir unreachable from this host' );\n\t}\n\treturn $pre;\n}, 10, 3 );\n\n\/\/ ============================================================================\n\/\/ \u0628\u062e\u0634 \u06f1\u06f2 \u2014 \u062d\u0630\u0641 \u0648\u06cc\u062c\u062a \u00ab\u067e\u0631\u0641\u0631\u0648\u0634\u200c\u062a\u0631\u06cc\u0646 \u0645\u062d\u0635\u0648\u0644\u0627\u062a\u00bb \u0627\u0632 \u0635\u0641\u062d\u0647\u0654 \u062f\u0633\u062a\u0647\u200c\u0647\u0627\/\u0628\u0631\u0686\u0633\u0628\u200c\u0647\u0627\n\/\/ (\u0627\u06cc\u0646 \u0648\u06cc\u062c\u062a \u0645\u062d\u0635\u0648\u0644\u0627\u062a \u06a9\u0644 \u0633\u0627\u06cc\u062a \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0627\u062f \u0648 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u062f \u0627\u0646\u06af\u0634\u062a\u0631 \u0644\u0627\u06cc \u062f\u0633\u062a\u0628\u0646\u062f\u0647\u0627 \u0648\n\/\/ \u06af\u0631\u062f\u0646\u0628\u0646\u062f \u0644\u0627\u06cc \u0633\u0627\u0639\u062a\u200c\u0647\u0627 \u062f\u06cc\u062f\u0647 \u0634\u0648\u062f \u2014 \u062f\u0627\u062f\u0647\u0654 \u062f\u0633\u062a\u0647\u200c\u0647\u0627 \u0633\u0627\u0644\u0645 \u0627\u0633\u062a\u060c \u0641\u0642\u0637 \u0627\u06cc\u0646 \u0648\u06cc\u062c\u062a \u06af\u0645\u0631\u0627\u0647\u200c\u06a9\u0646\u0646\u062f\u0647 \u0628\u0648\u062f)\n\/\/ ============================================================================\nadd_action( 'wp_head', function() {\n\tif ( ! function_exists( 'is_product_taxonomy' ) || ! is_product_taxonomy() ) return;\n\techo '
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.