Используем шорткоды при разработке собственной темы. Часть 1

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

Впервые WordPress Shortcode API было представлено в WordPress в версии 2.5. С тех пор они стали широко использоваться для возможности быстрой кастомизации внешнего вида страницы и вставки определенных форматированных сниппетов. Но шорткоды также можно полезно использовать при разработке тем WordPress — и мы покажем как это сделать.

Вступление

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

  1. Создание собственной функции для шорткода. Эта функция возвращает HTML, который будет заменен шорткодом в файле темы.
  2. Добавление шорткодов в систему WordPress, которая распознает ваши вставленные шорткоды в файлах темы..
  3. Использование шорткодов в файлах темы по назначению.

В сегодняшней статье мы создадим шорткод для вывода пользовательских записей. За основу возьмем стандартную тему WordPress TwentyTen.

Шаг 1. Пишем функцию для шорткода

Функция, которую вы создаете для шорткода, обычно определяет цели этого шорткода. Основная функция может быть определена в следующем виде (весь код можно добавить в конец файла functions.php темы):

// Определяем функцию, используемую для вывода Пользовательских Записей Проекта.
function project_shortcode( $atts ) {
	// Извлекаем аргументы для шорткода.
	extract( shortcode_atts( array(
		'limit' => '10',
		'orderby' => 'date',
	), $atts ) );
	/* Здесь мы напишем код для извлечения данных
	 * и построения HTML структуры, которая будет возвращаться в переменной $output
	 */
	$output = 'Эта переменная будет содержать итоговый код HTML для вашего пользовательского цикла проекта.';	
	return $output;
}

Убедитесь только, что вы не оставили пробелов или пустых строк в конце файл functions.php, так как это может вызвать определенные проблемы. Теперь давайте добавим немного кода для получения пользовательского типа записей ‘project’ и построения структуры HTML, которая будет заменена нашим шорткодом.

function project_shortcode( $atts ) {
	extract( shortcode_atts( array(
		'limit' => '10',
		'orderby' => 'date',
	), $atts ) );
	// Создаем пользовательский запрос для извлечения пользовательского типа записей project.
	$loop = new WP_Query(array('post_type' => 'project', 'posts_per_page' => $limit, 'orderby' => $orderby));
	// Проходимся по записям и выстраиваем HTML-структуру.
	if($loop){
		while ($loop->have_posts()){
			 $loop->the_post();
			 $output .= '<div class="type-post hentry"><h4 class="entry-title"><a href="'.get_permalink().'">'.get_the_title().'</a></h4>';
			 $output .= '<div class="entry-content">'.get_the_excerpt().'</div></div>';
		}
	}
	else
		$output = 'Извините, ни одного проекта не найдено. Попробуйте позже.';		
	// Теперь мы возвращаем код HTML  обратно в то место, из которого шорткод был вызван.
	return $output;
}

‘$atts’ — это атрибуты, предоставляемые шорткодом. PHP метод extract используется для разделения массива элементов на переменные, чтобы они могли использоваться прямо в функции.

В этом примере мы используем атрибуты, передаваемые в функции для того, чтобы создать пользовательский запрос для получения пользовательских данных записей “project”. Затем мы пробегаемся по всем возвращенным нам записям.

В цикле мы извлекаем и добавляем данные в переменную output с соответствующими тегами HTML. После завершения цикла наша переменная output содержит полный код HTML для нашего списка проектов. Этот HTML код отдается, а шорткод, который используется в теме, заменяется на код при загрузке страницы.

Продолжение статьи смотрите по ссылке Используем шорткоды при разработе собственной темы. Часть 2

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top