/ Плагины / Шаблоны страниц и записей

Шаблоны страниц и записей

HIT

10.07.2015

2790

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

Про подключение шаблона страницы или записи из плагина написано здесь.

Шаблоны страниц

Чтобы создать шаблон страницы надо создать php файл (в файлах темы) и в начале кода поместить следующее:

<?php /*Template Name: Название шаблона*/ ?>

После этого стандартный код шаблона страницы.

Также в шаблоны можно помещать различные функции, чтобы они были доступны по определенному url. т.е. создаем шаблон (update.php) и присваиваем его странице с url site.ru/update/. Теперь при переходе по данному url будет срабатывать функционал заложенный в данном шаблоне.

Шаблоны записей — плагин (до версии WP 4.7)

Для того чтобы такая же возможность была и у записей надо установить плагин Custom Post Template. После этого создать файл single-название_шаблона.php и в начале поместить запись

<?php 
/*
Template Name Posts: Запись без форматирования
*/ 
?>
Прописывать обязательно именно так, как приведено выше — столбиком.

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

Если переместить или переименовать файл шаблона, то связи со страницами нарушатся. Но если переименовать название шаблона, которое прописывается внутри, то название просто обновится — связи не будут потеряны.

Добавление выбора произвольного шаблона записей в плагин ACF (произвольные поля)

Надо добавить код в functions.php

// Поддержка произвольных шаблонов записей плагином ACF

// Get post templates
function get_post_templates(){
	$theme = wp_get_theme();
	$post_templates = array();
	$files = (array) $theme->get_files( 'php', 1 );
	foreach ( $files as $file => $full_path ) {
		$headers = get_file_data( $full_path, array( 'Template Name Posts' => 'Template Name Posts' ) );
		if ( empty( $headers['Template Name Posts'] ) )
		continue;
		$post_templates[ $file ] = $headers['Template Name Posts'];
	}
	return $post_templates;
}
 
// Add custom post template rule to dropdown
add_filter('acf/location/rule_types', 'acf_location_rules_types');
function acf_location_rules_types( $choices ){
	$choices['Post']['cpt'] = 'Post Template';
	return $choices;
}

// Add custom post template names to value dropdown
add_filter('acf/location/rule_values/cpt', 'acf_location_rules_values_cpt');
function acf_location_rules_values_cpt( $choices ){
	$templates = get_post_templates();
	foreach($templates as $k => $v){
		$choices[$k] = $v;
	}
	return $choices;
}

// Match location rule and show ACFs
add_filter('acf/location/rule_match/cpt', 'acf_location_rules_match_cpt', 10, 3);
function acf_location_rules_match_cpt( $match, $rule, $options ){
	global $post;
	if(isset($options['cpt'])){
		$current_post_template = $options['cpt'];	
	}else{
		$current_post_template = get_post_meta($post->ID,'custom_post_template',true);
	}
	
	$selected_post_template = $rule['value'];
	if($rule['operator'] == "=="){
		$match = ( $current_post_template == $selected_post_template );
	}elseif($rule['operator'] == "!="){
		$match = ( $current_post_template != $selected_post_template );
	}
	return $match;
}

// Add js to admin header to trigger ACFs
add_action('admin_head', 'acf_custom_post_template_js');
function acf_custom_post_template_js() {
echo "<script>jQuery('#custom_post_template').live('change', function(){ acf.screen['cpt'] = jQuery(this).val(); jQuery(document).trigger('acf/update_field_groups');});</script> \n";
}

Чтобы выбор шаблонов предлагался и в пользовательских типах записей в плагине в файле custom-post-templates.php нужно дополнить строку (через запятую slug’и пользовательских типов записей)

$post_types = apply_filters( 'cpt_post_types', array( 'post', 'track' ) );

Шаблоны записей (c WP 4.7)

Теперь шаблоны распространяются и на записи. Надо под названием шаблона, добавить необходимы тип записи, в том числе page.

<?php
/*
Template Name: Запись с табами
Template Post Type: post, page
*/
?>

Тем самым в WP с версии 4.7 появилась единая система шаблонов. К тому же она без проблем функционирует с плагином ACF.

Преобразовать страницы в записи

Преобразовать страницы в записи и наоборот (в товары или другие пользовательские типы записей) можно с помощью плагина Post Type Switcher (70 000).

Поделиться в соц. сетях:

  • Комментарии
  • Вложения

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

Пока нет комментариев. Будь первым!

Переменный стиль
Рекомендации для васПеременный стильOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.