Global-2026-07-12

This commit is contained in:
Dekart Deploy Bot 2026-07-12 14:34:24 +00:00
parent 1fa6f06ccf
commit ca70d76648
3 changed files with 77 additions and 1 deletions

View File

@ -0,0 +1,14 @@
<?php
// Auto-enable Redis object cache if available
if ( extension_loaded("redis") ) {
$host = getenv("WP_REDIS_HOST") ?: "127.0.0.1";
$port = (int)(getenv("WP_REDIS_PORT") ?: 6379);
$db = (int)(getenv("WP_REDIS_DATABASE") ?: 0);
if ( @fsockopen($host, $port, $errno, $errstr, 0.5) ) {
define("WP_REDIS_HOST", $host);
define("WP_REDIS_PORT", $port);
define("WP_REDIS_DATABASE", $db);
define("WP_CACHE", true);
}
}

View File

@ -55,12 +55,18 @@ class Pksh_Data {
* Адрес филиала * Адрес филиала
*/ */
public function get_address(): string { public function get_address(): string {
$cache_key = 'dekart_branch_address';
$cached = wp_cache_get( $cache_key, 'dekart_branch' );
if ( false !== $cached ) {
return $cached;
}
if ( ! array_key_exists( 'address', $this->branch ) ) { if ( ! array_key_exists( 'address', $this->branch ) ) {
$this->branch['address'] = get_option( 'branch_address' ) ?: $this->branch['address'] = get_option( 'branch_address' ) ?:
carbon_get_theme_option( 'site_address' ) ?: carbon_get_theme_option( 'site_address' ) ?:
carbon_get_post_meta( $this->post_id, 'contact_address' ) ?: carbon_get_post_meta( $this->post_id, 'contact_address' ) ?:
''; '';
} }
wp_cache_set( $cache_key, $this->branch['address'], 'dekart_branch', DAY_IN_SECONDS );
return $this->branch['address']; return $this->branch['address'];
} }
@ -68,11 +74,17 @@ class Pksh_Data {
* Координаты филиала (для карты) * Координаты филиала (для карты)
*/ */
public function get_coords(): string { public function get_coords(): string {
$cache_key = 'dekart_branch_coords';
$cached = wp_cache_get( $cache_key, 'dekart_branch' );
if ( false !== $cached ) {
return $cached;
}
if ( ! array_key_exists( 'coords', $this->branch ) ) { if ( ! array_key_exists( 'coords', $this->branch ) ) {
$this->branch['coords'] = get_option( 'branch_coords' ) ?: $this->branch['coords'] = get_option( 'branch_coords' ) ?:
carbon_get_post_meta( $this->post_id, 'contact_location' ) ?: carbon_get_post_meta( $this->post_id, 'contact_location' ) ?:
''; '';
} }
wp_cache_set( $cache_key, $this->branch['coords'], 'dekart_branch', DAY_IN_SECONDS );
return $this->branch['coords']; return $this->branch['coords'];
} }
@ -80,12 +92,18 @@ class Pksh_Data {
* Телефон филиала * Телефон филиала
*/ */
public function get_phone(): string { public function get_phone(): string {
$cache_key = 'dekart_branch_phone';
$cached = wp_cache_get( $cache_key, 'dekart_branch' );
if ( false !== $cached ) {
return $cached;
}
if ( ! array_key_exists( 'phone', $this->branch ) ) { if ( ! array_key_exists( 'phone', $this->branch ) ) {
$this->branch['phone'] = get_option( 'branch_phone' ) ?: $this->branch['phone'] = get_option( 'branch_phone' ) ?:
carbon_get_theme_option( 'site_phone' ) ?: carbon_get_theme_option( 'site_phone' ) ?:
carbon_get_post_meta( $this->post_id, 'contact_tel' ) ?: carbon_get_post_meta( $this->post_id, 'contact_tel' ) ?:
''; '';
} }
wp_cache_set( $cache_key, $this->branch['phone'], 'dekart_branch', DAY_IN_SECONDS );
return $this->branch['phone']; return $this->branch['phone'];
} }
@ -103,12 +121,18 @@ class Pksh_Data {
* Email филиала * Email филиала
*/ */
public function get_email(): string { public function get_email(): string {
$cache_key = 'dekart_branch_email';
$cached = wp_cache_get( $cache_key, 'dekart_branch' );
if ( false !== $cached ) {
return $cached;
}
if ( ! array_key_exists( 'email', $this->branch ) ) { if ( ! array_key_exists( 'email', $this->branch ) ) {
$this->branch['email'] = get_option( 'branch_email' ) ?: $this->branch['email'] = get_option( 'branch_email' ) ?:
carbon_get_theme_option( 'site_mail' ) ?: carbon_get_theme_option( 'site_mail' ) ?:
carbon_get_post_meta( $this->post_id, 'contact_mail' ) ?: carbon_get_post_meta( $this->post_id, 'contact_mail' ) ?:
''; '';
} }
wp_cache_set( $cache_key, $this->branch['email'], 'dekart_branch', DAY_IN_SECONDS );
return $this->branch['email']; return $this->branch['email'];
} }
@ -116,11 +140,17 @@ class Pksh_Data {
* Название филиала / организации * Название филиала / организации
*/ */
public function get_name(): string { public function get_name(): string {
$cache_key = 'dekart_branch_name';
$cached = wp_cache_get( $cache_key, 'dekart_branch' );
if ( false !== $cached ) {
return $cached;
}
if ( ! array_key_exists( 'name', $this->branch ) ) { if ( ! array_key_exists( 'name', $this->branch ) ) {
$this->branch['name'] = get_option( 'branch_name' ) ?: $this->branch['name'] = get_option( 'branch_name' ) ?:
carbon_get_theme_option( 'site_name' ) ?: carbon_get_theme_option( 'site_name' ) ?:
'Декарт'; 'Декарт';
} }
wp_cache_set( $cache_key, $this->branch['name'], 'dekart_branch', DAY_IN_SECONDS );
return $this->branch['name']; return $this->branch['name'];
} }
@ -128,9 +158,15 @@ class Pksh_Data {
* Город с предлогом (например "в Щёлково") * Город с предлогом (например "в Щёлково")
*/ */
public function get_city_prep(): string { public function get_city_prep(): string {
$cache_key = 'dekart_branch_city_prep';
$cached = wp_cache_get( $cache_key, 'dekart_branch' );
if ( false !== $cached ) {
return $cached;
}
if ( ! array_key_exists( 'city_prep', $this->branch ) ) { if ( ! array_key_exists( 'city_prep', $this->branch ) ) {
$this->branch['city_prep'] = get_option( 'branch_city_prep', 'в Щёлково' ); $this->branch['city_prep'] = get_option( 'branch_city_prep', 'в Щёлково' );
} }
wp_cache_set( $cache_key, $this->branch['city_prep'], 'dekart_branch', DAY_IN_SECONDS );
return $this->branch['city_prep']; return $this->branch['city_prep'];
} }
@ -148,9 +184,15 @@ class Pksh_Data {
* Количество отзывов на внешних площадках * Количество отзывов на внешних площадках
*/ */
public function get_ext_review_count(): string { public function get_ext_review_count(): string {
$cache_key = 'dekart_branch_ext_review_count';
$cached = wp_cache_get( $cache_key, 'dekart_branch' );
if ( false !== $cached ) {
return $cached;
}
if ( ! array_key_exists( 'ext_review_count', $this->branch ) ) { if ( ! array_key_exists( 'ext_review_count', $this->branch ) ) {
$this->branch['ext_review_count'] = get_option( 'branch_ext_review_count', '247' ); $this->branch['ext_review_count'] = get_option( 'branch_ext_review_count', '247' );
} }
wp_cache_set( $cache_key, $this->branch['ext_review_count'], 'dekart_branch', DAY_IN_SECONDS );
return $this->branch['ext_review_count']; return $this->branch['ext_review_count'];
} }
@ -158,12 +200,18 @@ class Pksh_Data {
* Социальные сети (из branch_social option или CF) * Социальные сети (из branch_social option или CF)
*/ */
public function get_social_links(): array { public function get_social_links(): array {
$cache_key = 'dekart_branch_social';
$cached = wp_cache_get( $cache_key, 'dekart_branch' );
if ( false !== $cached ) {
return $cached;
}
if ( ! array_key_exists( 'social', $this->branch ) ) { if ( ! array_key_exists( 'social', $this->branch ) ) {
$raw = get_option( 'branch_social' ) ?: $raw = get_option( 'branch_social' ) ?:
carbon_get_post_meta( $this->post_id, 'social_media' ) ?: carbon_get_post_meta( $this->post_id, 'social_media' ) ?:
[]; [];
$this->branch['social'] = is_array( $raw ) ? $raw : []; $this->branch['social'] = is_array( $raw ) ? $raw : [];
} }
wp_cache_set( $cache_key, $this->branch['social'], 'dekart_branch', DAY_IN_SECONDS );
return $this->branch['social']; return $this->branch['social'];
} }

View File

@ -67,6 +67,15 @@ function dekart_schema_output(): void {
return; return;
} }
// Object Cache key: page ID + locale + schema version
$cache_key = 'dekart_schema_graph_' . get_the_ID() . '_' . determine_locale();
$cached = wp_cache_get( $cache_key, 'dekart_schema' );
if ( false !== $cached ) {
echo $cached;
return;
}
$graph = array(); $graph = array();
// 1. WebPage // 1. WebPage
@ -180,7 +189,12 @@ function dekart_schema_output(): void {
return; // тихий выход вместо WSOD return; // тихий выход вместо WSOD
} }
echo '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>' . "\n"; $output = '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>' . "\n";
// Cache for 1 hour (3600 seconds) in 'dekart_schema' group
wp_cache_set( $cache_key, $output, 'dekart_schema', 3600 );
echo $output;
} }
/* ===================================================================== /* =====================================================================