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

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

Мне нужен Data Layer в моем файле header.php WordPress. Он уже используется автором следующим образом:

<?php $author_id = get_post_field('post_author', get_queried_object_id()); if (get_the_author_meta('display_name', $author_id) === 'AUTHOR1') { echo '<script> var dataLayer = []; dataLayer.push({'author': 'ALIAS_AUTHOR_1'}); </script>'; } ?>

Теперь сложная часть: Data Layer должен исчезнуть через 30 дней после даты публикации (не даты изменения). Я действительно искал по всему вебу, но не нашел способа отключить функцию по дате публикации плюс X дней. Есть идеи по этому поводу?

Ответ или решение

Для реализации функции, которая добавляет в Data Layer скрипт в зависимости от даты публикации поста в WordPress, и убирает его спустя 30 дней после публикации, вам потребуется немного модифицировать ваш существующий код. Вот пошаговое руководство:

  1. Получение даты публикации: Вам необходимо получить дату публикации поста, чтобы впоследствии сравнить её с текущей датой.

  2. Сравнение дат: Необходимо вычислить, прошли ли 30 дней с момента публикации. Для этого можно использовать функцию strtotime() и выполнять простое сравнение.

  3. Вывод Data Layer скрипта: Если прошло менее 30 дней с момента публикации, выводите ваш скрипт.

Ниже приведён модифицированный код, который решает вашу задачу:

<?php
// Получаем ID автора и дату публикации
$author_id = get_post_field('post_author', get_queried_object_id());
$post_date = get_the_date('U'); // Получаем дату публикации поста в формате Unix Timestamp
$current_date = current_time('timestamp'); // Получаем текущую дату в формате Unix Timestamp

// Вычисляем разницу в днях между текущей датой и датой публикации
$days_since_publish = ($current_date - $post_date) / (60 * 60 * 24);

// Проверяем, является ли автор 'AUTHOR1' и прошло ли менее 30 дней с момента публикации
if (get_the_author_meta('display_name', $author_id) === 'AUTHOR1' && $days_since_publish < 30) {
    echo '<script>var dataLayer = []; dataLayer.push({\'author\': \'ALIAS_AUTHOR_1\'});</script>';
}
?>

Что делает данный код:

  • Получает ID автора поста и дату его публикации.
  • Вычисляет количество дней, прошедших с момента публикации.
  • Если автор соответствует указанному (в данном случае ‘AUTHOR1’) и прошло менее 30 дней, вставляет скрипт с данными в dataLayer.

Где разместить этот код:

Вы можете разместить этот код внутри файла header.php вашей темы WordPress. Убедитесь, что вы делаете это в области, где выполняется PHP, и перед закрывающим тегом </head>.

Замечания:

  1. Убедитесь, что ваш сайт настроен на правильный часовой пояс, так как используется current_time() для получения текущего времени.
  2. Если вы используете дополнительные плагины, которые могут перемещать код в другие части страницы, убедитесь, что скрипт загружается в правильном месте.

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

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

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