Применить шаблон в зависимости от того, является ли это существующим или новым постом.

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

Я переосмысляю веб-сайт с тысячами записей и пользовательскими типами записей. Оригинальный сайт был создан с помощью традиционной темы до FSE. Я разрабатываю дочернюю тему на основе блоков, и мне нужно учитывать существующий контент. Поэтому я должен сохранить определённые плагины и функциональность. Но для того чтобы улучшить пользовательский опыт новой дочерней темы, мне нужно различать существующий контент и новый контент. Мой вопрос: Есть ли способ применить шаблон к существующим (старыми) записям и другой шаблон к новым созданным записям? Два подхода, о которых я могу подумать, это применение другого шаблона в зависимости от даты создания или автоматическое присвоение новым созданным записям определённой категории и автоматическое применение другого шаблона к записям с этой категорией. Если кто-то может помочь с одной из двух возможностей или имеет другой подход, я буду признателен за их советы. Спасибо!

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

Для достижения цели по применению различных шаблонов к существующим и новым постам на вашем веб-сайте, построенном на блоковой дочерней теме, важно рассмотреть несколько ключевых моментов. В контексте вашего запроса, оптимально подойти к этому вопросу с использованием одного из двух предложенных вами методов, а также предложить альтернативные варианты.

1. Применение шаблона на основе даты создания поста

Одним из наиболее простых способов разделения контента является использование даты создания. Вы можете реализовать условную структуру в вашем блок-шаблоне, которая будет проверять дату публикации поста и в зависимости от этой даты применять соответствующий шаблон. Например:

if ( get_the_date('Y-m-d') < '2023-01-01' ) {
    get_template_part( 'template-parts/old-post-template' );
} else {
    get_template_part( 'template-parts/new-post-template' );
}

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

2. Автоматическая категория для новых постов

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

add_action( 'save_post', 'assign_new_category' );
function assign_new_category( $post_id ) {
    if ( get_post_type( $post_id ) !== 'your_custom_post_type' ) {
        // Проверяем, что пост создается в первый раз
        if ( !wp_is_post_revision( $post_id ) && !has_term( '', 'your_custom_category', $post_id ) ) {
            wp_set_post_categories( $post_id, array('new-category-id') );
        }
    }
}

// Применение шаблона по категории
if ( has_term( 'new-category', 'category' ) ) {
    get_template_part( 'template-parts/new-post-template' );
} else {
    get_template_part( 'template-parts/old-post-template' );
}

Этот метод повысит уровень организации вашего контента и упростит поддержку при дальнейшем редизайне.

3. Альтернативный подход: кастомные поля

Если вы хотите более гибкий подход, рассмотрите возможность использования кастомных полей. Вы можете создать поле, которое будет указывать, является ли пост новым или старым. Обновляя старые записи, вы сможете массово установить это поле. Это даст возможность вашему шаблону адаптироваться к контенту без необходимости зависеть от даты или категории.

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

Заключение

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

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

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