Вопрос или проблема
Привет, я пытаюсь объединить два куска кода в один. Оба работают, но не вместе, как бы я ни пытался, сайт продолжает падать.
<?php
$t=date("H");
if ($t<"12")
{
echo " Хорошего утра! $display_name ";
}
else if ($t<"18")
{
echo " Хорошего дня! $display_name ";
}
else
{
echo " Хорошего вечера! $display_name ";
} ?>
и
<?php global $current_user; wp_get_current_user(); ?>
<?php if ( is_user_logged_in() ) {
echo 'Добро пожаловать, брат: ' . $current_user->user_login . "\n"; }
else { wp_loginout(); } ?>
Другие параметры пользователя было бы хорошо заменить
Я вижу две очевидные ошибки, которые могут вас сдерживать.
$t=date("H");
возвращает отформатированную дату в виде строки, в то время как if ($t<"12")
и else if ($t<"18")
пытаются делать математические операции со словами.
Рассмотрите возможность использования $t=(int)date("H");
(принудительно сделать ответ целым числом) с if ($t<12)
и else if ($t<18)
, что хотя бы выполняет математические операции с числами.
Это код, который вам нужен. В WordPress есть функция current_time, которая справляется с этим, а затем вы можете добавить немного логики для получения информации о пользователе.
Редактирование: это также можно использовать на странице, но я предпочитаю использовать это как повторно используемую функцию.
function heyBro(){
global $current_user;
wp_get_current_user();
if (is_user_logged_in()) {
$display_name = $current_user->user_login;
$t = current_time('H');
$salutation = '';
if ($t < '12') {
$salutation = 'утра';
} else if ($t < '18') {
$salutation = 'дня';
} else {
$salutation = 'вечера';
}
return 'Хорошего ' . $salutation . ', ' . $display_name . '!';
}
wp_loginout();
}
Ответ или решение
Чтобы создать приветствие для зарегистрированных пользователей в зависимости от времени суток на платформе WordPress, необходимо объединить две исходные части кода, которые вы предоставили. Вы правы, что их интеграция может вызвать проблемы, особенно если не учитывать форматы данных. В этом ответе я представлю окончательное решение с учетом всех деталей.
Код приветствия в зависимости от времени суток для пользователей WordPress
Наиболее оптимальный способ реализовать данную функциональность в WordPress — создание функции. Эта функция будет проверять, залогинен ли пользователь, получать текущее время и формировать приветствие в зависимости от времени суток. Вот финальная версия кода:
function greet_user() {
global $current_user;
wp_get_current_user();
// Проверка, залогинен ли пользователь
if (is_user_logged_in()) {
$display_name = $current_user->user_login;
// Получаем текущее время в часах
$current_hour = (int) current_time('H');
// Определяем приветствие в зависимости от времени суток
if ($current_hour < 12) {
$salutation = 'Доброе утро';
} else if ($current_hour < 18) {
$salutation = 'Добрый день';
} else {
$salutation = 'Добрый вечер';
}
// Формируем и возвращаем итоговое сообщение
return $salutation . ', ' . $display_name . '!';
}
// Если пользователь не залогинен, выводим ссылку для входа
return wp_loginout('', false);
}
// Выводим приветствие на нужной странице
echo greet_user();
Пояснения к коду:
-
Получение текущего пользователя:
- Мы используем
global $current_user
иwp_get_current_user()
, чтобы доступиться к данным текущего пользователя.
- Мы используем
-
Проверка статуса входа:
is_user_logged_in()
проверяет, залогинен ли пользователь. Если да, продолжаем с логикой приветствия.
-
Получение и обработка времени:
- Мы используем
current_time('H')
, чтобы получить текущее время в формате 24 часов. Приводим значение к целочисленному типу с помощью(int)
, чтобы избежать ошибок при сравнении строк.
- Мы используем
-
Формирование приветствия:
- Используем условные операторы
if
, чтобы определить, утро, день или вечер, и составляем окончательный ответ с помощью переменной$display_name
.
- Используем условные операторы
-
Вывод для незалогиненных пользователей:
- Если пользователь не вошел в систему, мы используем
wp_loginout()
для отображения ссылки на страницу входа.
- Если пользователь не вошел в систему, мы используем
Завершение:
Эта структура кода легка и надежна, что делает ее подходящей для использования в любом проекте на WordPress. Убедитесь, что функция greet_user
вызывается в месте, где она должна отображаться, например в шапке сайта или на странице приветствия пользователя.
Если вам нужны дополнительные параметры или изменения, такие как замена имени пользователя на другой атрибут (например, полное имя), вы можете легко модифицировать переменную $display_name
в рамках функции.