Как создать динамическую функцию в WordPress для отображения времени работы сайта

В некоторых проектах полезно отображать на сайте, сколько времени он работает с момента запуска. Например, это может быть элемент доверия для посетителей или часть фирменного стиля. В этой статье разберём, как создать динамическую функцию в WordPress, которая будет показывать время работы сайта в днях, часах, минутах и секундах.

Почему важно использовать динамическое отображение времени работы сайта

Статическое отображение даты запуска сайта не всегда удобно и информативно. Если просто указать дату, посетителю придётся считать самостоятельно. Динамическое же значение обновляется автоматически и всегда показывает актуальное время, что выглядит более профессионально.

Кроме того, динамическая функция позволяет гибко настраивать формат отображения и использовать данные в различных частях сайта — в виджетах, шорткодах или темах.

Основные шаги создания функции отображения времени работы сайта

Для решения задачи нам нужно:

  • Определить дату запуска сайта — можно сохранить её в настройках WordPress или в константе;
  • Рассчитать разницу между текущим временем и датой запуска;
  • Преобразовать разницу в читаемый формат (дни, часы, минуты, секунды);
  • Вывести результат в удобном виде, например, через шорткод.

Рассмотрим пример реализации.

Сохранение даты запуска сайта

Лучше всего дату запуска сайта сохранить в настройках, чтобы менять её при необходимости без правки кода. Для этого используем опцию WordPress. Например, добавим дату запуска через админку или при активации темы/плагина.

function wpmarket_set_site_launch_date() {
    if ( ! get_option('wpmarket_site_launch_date') ) {
        update_option('wpmarket_site_launch_date', '2023-01-01 00:00:00');
    }
}
add_action('after_setup_theme', 'wpmarket_set_site_launch_date');

В этом примере дата запуска установлена 1 января 2023 года. При необходимости вы можете изменить её через базу данных или добавить интерфейс для редактирования.

Функция для вычисления времени работы сайта

Создадим функцию wpmarket_get_site_uptime(), которая будет возвращать строку с временем работы.

function wpmarket_get_site_uptime() {
    $launch_date = get_option('wpmarket_site_launch_date');
    if ( ! $launch_date ) {
        return 'Дата запуска не установлена';
    }

    $launch_timestamp = strtotime($launch_date);
    $current_timestamp = current_time('timestamp');

    if ($current_timestamp < $launch_timestamp) {
        return 'Дата запуска в будущем';
    }

    $diff = $current_timestamp - $launch_timestamp;

    $days = floor($diff / 86400);
    $diff %= 86400;
    $hours = floor($diff / 3600);
    $diff %= 3600;
    $minutes = floor($diff / 60);
    $seconds = $diff % 60;

    return sprintf('%d дней, %d часов, %d минут, %d секунд', $days, $hours, $minutes, $seconds);
}

Здесь мы корректно обрабатываем данные, учитывая локальное время WordPress через current_time('timestamp').

Вывод времени работы сайта через шорткод

Чтобы удобно использовать функцию в контенте страниц и записей, создадим шорткод.

function wpmarket_uptime_shortcode() {
    return wpmarket_get_site_uptime();
}
add_shortcode('wpmarket_uptime', 'wpmarket_uptime_shortcode');

Теперь в любом месте сайта можно вставить [wpmarket_uptime], и будет показано актуальное время работы.

Дополнительные возможности и улучшения

Кэширование результата для оптимизации

Поскольку время обновляется каждую секунду, при большом трафике есть смысл кэшировать результат на минуту, чтобы снизить нагрузку на базу данных.

function wpmarket_get_site_uptime_cached() {
    $cache_key = 'wpmarket_site_uptime';
    $uptime = get_transient($cache_key);
    if ($uptime === false) {
        $uptime = wpmarket_get_site_uptime();
        set_transient($cache_key, $uptime, 60); // Кэш на 60 секунд
    }
    return $uptime;
}

function wpmarket_uptime_shortcode_cached() {
    return wpmarket_get_site_uptime_cached();
}
add_shortcode('wpmarket_uptime', 'wpmarket_uptime_shortcode_cached');

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

Использование в виджете

Если хотите выводить время работы сайта в сайдбаре, можно создать небольшой виджет.

class WPMarket_Uptime_Widget extends WP_Widget {
    public function __construct() {
        parent::__construct('wpmarket_uptime_widget', 'Время работы сайта (WPMarket)');
    }

    public function widget($args, $instance) {
        echo $args['before_widget'];
        if ( ! empty($instance['title']) ) {
            echo $args['before_title'] . apply_filters('widget_title', $instance['title']) . $args['after_title'];
        }
        echo '<p>' . wpmarket_get_site_uptime_cached() . '</p>';
        echo $args['after_widget'];
    }

    public function form($instance) {
        $title = ! empty($instance['title']) ? $instance['title'] : 'Время работы сайта';
        ?>
        <p>
            <label for="<?php echo $this->get_field_id('title'); ?>">Заголовок:</label>
            <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>">
        </p>
        <?php
    }

    public function update($new_instance, $old_instance) {
        $instance = array();
        $instance['title'] = (!empty($new_instance['title'])) ? sanitize_text_field($new_instance['title']) : '';
        return $instance;
    }
}

function wpmarket_register_uptime_widget() {
    register_widget('WPMarket_Uptime_Widget');
}
add_action('widgets_init', 'wpmarket_register_uptime_widget');

Теперь в разделе виджетов появится новый элемент, который можно разместить в любом сайдбаре.

Интеграция с плагинами WPShop

Если вы используете темы или плагины из каталога WPShop, например, темы Reboot или Root, то эту функцию можно встроить в шаблоны через шорткод или напрямую вызвать функцию wpmarket_get_site_uptime() в нужных местах.

Также вы можете добавить отображение времени работы в модальные окна с помощью плагина My Popup, чтобы привлечь внимание посетителей к этому показателю.

Вывод

Создание динамической функции, показывающей время работы сайта, — простой и интересный способ добавить уникальность вашему проекту. С помощью приведённого кода вы легко сможете реализовать этот функционал, а также расширить его под свои задачи.

Как создать автоматическое отображение связанных постов в WordPress
20.02.2026
Как создать автоматическое удаление старых постов в WordPress по дате
31.01.2026
Как создать автоматический импорт атрибутов в WooCommerce с помощью кода
04.04.2026
Как создать автоматический отчет по продажам в WooCommerce с использованием WPRemark
09.01.2026
Как создать автоматический импорт последних новостей в WordPress с помощью WPMarket
08.02.2026