Установить шаблон страницы для всех страниц?

Я знаю, что шаблон страницы установлен в wpdb как meta_key = _wp_page_template и meta_value = template.php.

Как я могу написать сценарий SQL для установки каждого сообщения, где post_type = 'page' для определенного шаблона?

EDIT: на основании приведенных ниже комментариев я добавлю детали, которые я желаю «нормализовать» мои страницы, поскольку некоторые из них настроены на пользовательские шаблоны.

Solutions Collecting From Web of "Установить шаблон страницы для всех страниц?"

EDIT. Как отмечено в комментариях к вашему вопросу, наилучшим подходом было бы просто отредактировать файл page.php . Если вы хотите, чтобы ВСЕ ваши страницы имели один и тот же шаблон страницы, и не нужно делать ничего лишнего, чтобы установить его таким образом, совершенно очевидно, почему это хорошая идея. 🙂

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


Если вы настаиваете, хотя:

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

 add_action( 'admin_init', 'set_page_templates' ); function set_page_templates(){ foreach( get_posts('post_type=page&posts_per_page=-1') as $page ) { $current_template = get_post_meta( $page->ID, '_wp_page_template', true ); $new_template = 'new_template.php'; if( $current_template != $new_template ) update_post_meta( $page->ID, '_wp_page_template', $new_template ); } } 

Может быть более эффективное действие, чтобы включить это, так как это будет выполняться при каждой загрузке страницы администратора. Возможно, вы можете запустить это один раз, а затем удалить код, он должен работать нормально. Кроме того, вы можете подключить его к действию save_post (которое фактически вернет идентификатор страницы, который вы сохраняете для себя как один из аргументов вашей функции), чтобы автоматически изменять шаблон страницы, если это не то, что вы хотите, чтобы оно сохранялось сообщение или страница (конечно, пропуская foreach в этом случае).

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

 function wpd_page_template_filter( $templates = '' ) { // the passed $templates contains a single or array of templates that apply to this query // get queried page object $this_page = get_queried_object(); // check $this_page meta key, check slug, check parent, etc.. return locate_template( 'my-custom-template.php' ); } add_filter( 'page_template', 'wpd_page_template_filter' );