Вопрос или проблема
Мне нужен 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 дней после публикации, вам потребуется немного модифицировать ваш существующий код. Вот пошаговое руководство:
-
Получение даты публикации: Вам необходимо получить дату публикации поста, чтобы впоследствии сравнить её с текущей датой.
-
Сравнение дат: Необходимо вычислить, прошли ли 30 дней с момента публикации. Для этого можно использовать функцию
strtotime()
и выполнять простое сравнение. -
Вывод 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>
.
Замечания:
- Убедитесь, что ваш сайт настроен на правильный часовой пояс, так как используется
current_time()
для получения текущего времени. - Если вы используете дополнительные плагины, которые могут перемещать код в другие части страницы, убедитесь, что скрипт загружается в правильном месте.
Такой подход позволит вам динамически управлять скриптом в зависимости от времени, прошедшего с момента публикации поста.