Как сделать список дней недели с активным днем?

Ссылка скопирована
PHP
1 ответ

Как сделать Ссылка удалена модератором.
В футере дни недели с активным днем

Как сделать список дней недели с активным днем?

Дополнительно:

Не надо ставить как можно больше тэгов. Лучше оставить один, но конкретный, с которым проблема.
См.п.3.1 Регламента. Также обратите внимание на п.5.7

upd:

<?php   $week_day = [     1 => 'ПН', 2 => 'ВТ', 3 => 'СР', 4 => 'ЧТ', 5 => 'ПТ', 6 => 'СБ', 7 =>'ВС' ];  foreach ($week_day as $key => $day) { ?> 	<div class="item <?php echo ($key == wp_date('N') ? 'current_day' : '') ?>"><?php echo $day; ?></div> <?php } ?>

<?php $week_day = [ 1 => 'ПН', 2 => 'ВТ', 3 => 'СР', 4 => 'ЧТ', 5 => 'ПТ', 6 => 'СБ', 7 =>'ВС' ]; foreach ($week_day as $key => $day) { ?> <div class="item <?php echo ($key == wp_date('N') ? 'current_day' : '') ?>"><?php echo $day; ?></div> <?php } ?>

  • ну допустим вот список
    <div class="footer-wrap__contacts--list"> 											<div class="item">НД</div> 											<div class="item">ПН</div> 											<div class="item">ВТ</div> 											<div class="item">СР</div> 											<div class="item">ЧТ</div> 											<div class="item">ПТ</div> 											<div class="item">СБ</div> 									</div>

    <div class="footer-wrap__contacts--list"> <div class="item">НД</div> <div class="item">ПН</div> <div class="item">ВТ</div> <div class="item">СР</div> <div class="item">ЧТ</div> <div class="item">ПТ</div> <div class="item">СБ</div> </div>

    А как мне curent подставить?? извините не въехал

    это условие не понимаю к чему

    if(wp_date('N') == 7) {    echo 'current_day';  }

    if(wp_date('N') == 7) { echo 'current_day'; }

  • Спасибо!
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь Волков Ответ

Список дней недели с активным текущим днём можно сделать на PHP при рендере страницы или на JavaScript в браузере. Если сайт должен учитывать часовой пояс WordPress, лучше использовать PHP и функцию current_time(), а не системное время сервера.

$days = [
    1 => 'Понедельник',
    2 => 'Вторник',
    3 => 'Среда',
    4 => 'Четверг',
    5 => 'Пятница',
    6 => 'Суббота',
    7 => 'Воскресенье',
];
 
$current_day = (int) current_time('N');
 
echo '<ul class="week-days">';
foreach ($days as $number => $label) {
    $class = $number === $current_day ? ' class="is-active"' : '';
    echo '<li' . $class . '>' . esc_html($label) . '</li>';
}
echo '</ul>';

$days = [ 1 => 'Понедельник', 2 => 'Вторник', 3 => 'Среда', 4 => 'Четверг', 5 => 'Пятница', 6 => 'Суббота', 7 => 'Воскресенье', ]; $current_day = (int) current_time('N'); echo '<ul class="week-days">'; foreach ($days as $number => $label) { $class = $number === $current_day ? ' class="is-active"' : ''; echo '<li' . $class . '>' . esc_html($label) . '</li>'; } echo '</ul>';

CSS для активного дня:

.week-days {
    display: flex;
    gap: 8px;
    list-style: none;
    margin: 0;
    padding: 0;
}
 
.week-days li {
    padding: 6px 10px;
}
 
.week-days .is-active {
    font-weight: 700;
    background: #f1f5f9;
}

.week-days { display: flex; gap: 8px; list-style: none; margin: 0; padding: 0; } .week-days li { padding: 6px 10px; } .week-days .is-active { font-weight: 700; background: #f1f5f9; }

Если страница сильно кэшируется, PHP может отдать вчерашний активный день до сброса кэша. Тогда активный класс лучше ставить JavaScript-ом на стороне пользователя:

const day = new Date().getDay() || 7;
document.querySelector('[data-day="' + day + '"]')?.classList.add('is-active');

const day = new Date().getDay() || 7; document.querySelector('[data-day="' + day + '"]')?.classList.add('is-active');

Для расписания организации чаще лучше привязываться к часовому поясу сайта, а не к компьютеру пользователя. Поэтому PHP-вариант через current_time('N') обычно правильнее для WordPress.

Для футера лучше не хранить активный день руками в HTML, а всегда считать его на сервере. Тогда завтра класс сам переедет на следующий элемент. Если сайт работает по московскому времени, проверьте часовой пояс в настройках WordPress: Настройки -> Общие -> Часовой пояс. Функция wp_date('N') вернёт номер дня недели от 1 до 7, где 1 — понедельник, 7 — воскресенье.

$days = [
    1 => 'ПН',
    2 => 'ВТ',
    3 => 'СР',
    4 => 'ЧТ',
    5 => 'ПТ',
    6 => 'СБ',
    7 => 'ВС',
];
 
$today = (int) wp_date('N');
 
foreach ($days as $num => $label) {
    $class = $num === $today ? ' item--active' : '';
    echo '<div class="item' . esc_attr($class) . '">' . esc_html($label) . '</div>';
}

$days = [ 1 => 'ПН', 2 => 'ВТ', 3 => 'СР', 4 => 'ЧТ', 5 => 'ПТ', 6 => 'СБ', 7 => 'ВС', ]; $today = (int) wp_date('N'); foreach ($days as $num => $label) { $class = $num === $today ? ' item--active' : ''; echo '<div class="item' . esc_attr($class) . '">' . esc_html($label) . '</div>'; }

Если у вас в вёрстке неделя начинается с воскресенья, просто поменяйте порядок массива, но ключи оставьте правильными. Не сравнивайте текст дня вроде ПН с текущей датой: это неудобно для локализации и легко ломается из-за регистра или сокращений.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно