Task 10121 | fix: поправили прайсы цен для карт, которые некорректно выводятся при заполнении из админки
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
/**
|
||||
* Переключает язык (регионы) необходим плагин Polylang
|
||||
* Поддерживает множественные вызовы на одной странице
|
||||
* Исправлена проблема с архивами кастомных типов записей
|
||||
*/
|
||||
|
||||
|
||||
@@ -25,6 +26,11 @@ $unique_id = 'plLangSwitcher' . $instance_counter;
|
||||
padding: 6px;
|
||||
gap: 4px;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.pl-lang-switcher-container {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.dark .pl-lang-switcher-container {
|
||||
border: 1px solid rgba(248, 248, 248, 0.05);
|
||||
@@ -58,6 +64,14 @@ $unique_id = 'plLangSwitcher' . $instance_counter;
|
||||
padding-right: 12px;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.pl-lang-switcher-button,
|
||||
.pl-lang-switcher-container a{
|
||||
flex-grow: 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.dark .pl-lang-switcher-button,
|
||||
.dark .pl-lang-switcher-container a {
|
||||
color: #b9b7b9;
|
||||
@@ -100,11 +114,41 @@ $unique_id = 'plLangSwitcher' . $instance_counter;
|
||||
$class = $is_current ? 'pl-lang-switcher-current' : '';
|
||||
|
||||
$lang_url = '';
|
||||
if (function_exists('pll_home_url')) {
|
||||
if (is_singular() && function_exists('pll_get_post')) {
|
||||
$translated_post_id = pll_get_post(get_the_ID(), $lang_slug);
|
||||
if ($translated_post_id) {
|
||||
$lang_url = get_permalink($translated_post_id);
|
||||
|
||||
|
||||
if (is_singular() && function_exists('pll_get_post')) {
|
||||
$translated_post_id = pll_get_post(get_the_ID(), $lang_slug);
|
||||
if ($translated_post_id) {
|
||||
$lang_url = get_permalink($translated_post_id);
|
||||
} else {
|
||||
$lang_url = pll_home_url($lang_slug);
|
||||
}
|
||||
}
|
||||
|
||||
elseif (is_post_type_archive()) {
|
||||
$post_type = get_post_type();
|
||||
if ($post_type && function_exists('pll_get_post_type_archive_link')) {
|
||||
$lang_url = pll_get_post_type_archive_link($post_type, $lang_slug);
|
||||
}
|
||||
|
||||
|
||||
if (empty($lang_url)) {
|
||||
$archive_link = get_post_type_archive_link($post_type);
|
||||
if ($archive_link) {
|
||||
|
||||
$lang_url = str_replace(home_url(), pll_home_url($lang_slug), $archive_link);
|
||||
} else {
|
||||
$lang_url = pll_home_url($lang_slug);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
elseif (is_tax() || is_category() || is_tag()) {
|
||||
$queried_object = get_queried_object();
|
||||
if ($queried_object && function_exists('pll_get_term')) {
|
||||
$translated_term = pll_get_term($queried_object->term_id, $lang_slug);
|
||||
if ($translated_term) {
|
||||
$lang_url = get_term_link($translated_term);
|
||||
} else {
|
||||
$lang_url = pll_home_url($lang_slug);
|
||||
}
|
||||
@@ -113,6 +157,39 @@ $unique_id = 'plLangSwitcher' . $instance_counter;
|
||||
}
|
||||
}
|
||||
|
||||
elseif (is_archive()) {
|
||||
|
||||
if (is_author()) {
|
||||
$author = get_queried_object();
|
||||
if ($author) {
|
||||
$author_posts_url = get_author_posts_url($author->ID);
|
||||
$lang_url = str_replace(home_url(), pll_home_url($lang_slug), $author_posts_url);
|
||||
} else {
|
||||
$lang_url = pll_home_url($lang_slug);
|
||||
}
|
||||
}
|
||||
|
||||
elseif (is_date()) {
|
||||
$current_url = home_url(add_query_arg(array(), $wp->request));
|
||||
$lang_url = str_replace(home_url(), pll_home_url($lang_slug), $current_url);
|
||||
}
|
||||
|
||||
else {
|
||||
$lang_url = pll_home_url($lang_slug);
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
if (function_exists('pll_home_url')) {
|
||||
$lang_url = pll_home_url($lang_slug);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (empty($lang_url)) {
|
||||
$lang_url = pll_home_url($lang_slug);
|
||||
}
|
||||
|
||||
$lang_name = '';
|
||||
if (function_exists('pll_languages_list')) {
|
||||
$lang_names = pll_languages_list(array('fields' => 'name'));
|
||||
@@ -127,12 +204,24 @@ $unique_id = 'plLangSwitcher' . $instance_counter;
|
||||
$lang_name = strtoupper($lang_slug);
|
||||
}
|
||||
|
||||
// Замена названий языков на кастомные
|
||||
$custom_lang_names = array(
|
||||
'Fakel Fitness' => 'Фитнес-центр',
|
||||
'Fakel Gym' => 'Зал силовых'
|
||||
);
|
||||
|
||||
if (isset($custom_lang_names[$lang_name])) {
|
||||
$display_name = $custom_lang_names[$lang_name];
|
||||
} else {
|
||||
$display_name = $lang_name;
|
||||
}
|
||||
|
||||
echo sprintf(
|
||||
'<a href="%s" class="%s" data-lang="%s">%s</a>',
|
||||
esc_url($lang_url),
|
||||
esc_attr($class),
|
||||
esc_attr($lang_slug),
|
||||
esc_html($lang_name)
|
||||
esc_html($display_name)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -141,7 +230,6 @@ $unique_id = 'plLangSwitcher' . $instance_counter;
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
// Инициализируем все переключатели языков на странице
|
||||
const containers = document.querySelectorAll('.pl-lang-switcher-container[data-switcher-id="<?php echo $unique_id; ?>"]');
|
||||
|
||||
containers.forEach(function(container) {
|
||||
@@ -209,7 +297,6 @@ $unique_id = 'plLangSwitcher' . $instance_counter;
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
// Обновляем только в текущем контейнере
|
||||
container.querySelectorAll('a').forEach(a => a.classList.remove('pl-lang-switcher-current'));
|
||||
link.classList.add('pl-lang-switcher-current');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user