как мне получить приветствие для вошедших пользователей в зависимости от времени суток

Вопрос или проблема

Привет, я пытаюсь объединить два куска кода в один. Оба работают, но не вместе, как бы я ни пытался, сайт продолжает падать.

<?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();

Пояснения к коду:

  1. Получение текущего пользователя:

    • Мы используем global $current_user и wp_get_current_user(), чтобы доступиться к данным текущего пользователя.
  2. Проверка статуса входа:

    • is_user_logged_in() проверяет, залогинен ли пользователь. Если да, продолжаем с логикой приветствия.
  3. Получение и обработка времени:

    • Мы используем current_time('H'), чтобы получить текущее время в формате 24 часов. Приводим значение к целочисленному типу с помощью (int), чтобы избежать ошибок при сравнении строк.
  4. Формирование приветствия:

    • Используем условные операторы if, чтобы определить, утро, день или вечер, и составляем окончательный ответ с помощью переменной $display_name.
  5. Вывод для незалогиненных пользователей:

    • Если пользователь не вошел в систему, мы используем wp_loginout() для отображения ссылки на страницу входа.

Завершение:

Эта структура кода легка и надежна, что делает ее подходящей для использования в любом проекте на WordPress. Убедитесь, что функция greet_user вызывается в месте, где она должна отображаться, например в шапке сайта или на странице приветствия пользователя.

Если вам нужны дополнительные параметры или изменения, такие как замена имени пользователя на другой атрибут (например, полное имя), вы можете легко модифицировать переменную $display_name в рамках функции.

Оцените материал
Добавить комментарий

Капча загружается...