Программно менять шаблоны сообщений?

Мне нужно изменить шаблон на несколько сотен страниц на моем сайте. Кто-нибудь знает, есть ли команда, чтобы сделать это программно? См. Следующий фрагмент кода; Я хотел бы заменить мой комментарий внутри цикла функцией, которая изменит шаблон текущей страницы:

query = new WP_Query($args); while ( $query->have_posts() ) : $the_query->the_post(); if ( has_tag('tag-slug') ) { /* CHANGE TEMPLATE OF $post */ } endwhile; wp_reset_postdata(); 

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

Обновить:

Взято из документации wp_insert_post

ПРИМЕЧАНИЕ. Клавиша page_template была удалена из таблицы $ post и теперь находится в таблице wp_postmeta. Чтобы установить шаблон страницы на странице, используйте update_post_meta вместо этого мета-ключом _wp_page_template.

Таким образом, вы можете получить шаблон страницы с помощью get_post_meta и обновить его с помощью update_post_meta (или установить его с помощью add_post_meta )

О каких форматах вы обращаете? Если вы хотите изменить форматирование, которое можно изменить с помощью css. Вы можете использовать post_class (), который добавит класс, называя ваш тег в контейнере. Затем вы можете настроить таргетинг на этот класс.

Внутри цикла:

 <div <?php post_class()?> > </div> 

Также проверьте действие pre_get_post ; Использование его с условными выражениями может помочь.

Попробуй это:

 while ( $query->have_posts() ) : $query->the_post(); if ( has_tag('tag-slug') ) { get_template_part( 'content', 'tag-slug' ); } else { get_template_part( 'content' ); } endwhile; 

Затем вам необходимо создать content.php и content-tag-slug.php с соответствующим контентом.

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

Чтобы изменить шаблон сообщения, вызовите update_post_meta($query->the_post->ID, '_wp_page_template', 'YOUR-NEW-TEMPLATE-HERE.php')

Вот, например, пример из WP Codex, найденный в ссылке @ Xeross, с фрагментом кода из исходного вопроса:

 $query = new WP_Query($args); while ( $query->have_posts() ) : $query->the_post(); if ( has_tag('tag-slug') ) { /* CHANGE TEMPLATE OF $post */ update_post_meta($query->the_post->ID, '_wp_page_template', 'YOUR-NEW-TEMPLATE-HERE.php'); } endwhile; wp_reset_postdata(); 

Престижность @Xeross для предоставления ответа по ссылке и предоставления документации о том, где хранится базовая точка шаблона. См. Ответ @ Xeross для получения более https://wordpress.stackexchange.com/a/24933/69247