WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Получай пассивный доход от сайта

shortcode_atts() WP 2.5

Обрабатывает атрибуты (параметры) шорткода: добавляет значения по умолчанию когда нужно и удаляет неподходящие атрибуты.

Результат будет содержать ключи из значения атрибутов из параметра $atts, которые есть в параметре $pairs. Т.е. $pairs — это параметры по умолчанию, а $atts передаваемые параметры. В передаваемых параметрах не может быть ключей, которых нет в дефолтных. Это, своего рода, белый список атрибутов шорткода.

Читайте обязательно: Создание шорткода в WordPress

Описание и примеры в видео-формате:

Хуки из функции
Возвращает

Массив. Собранный и отфильтрованный список атрибутов.

Использование

shortcode_atts( $pairs, $atts, $shortcode );
$pairs(массив) (обязательный)

Ассоциативный массив который описывает возможные атрибуты шорткода (это ключи массива) и их дефолтные значения.

ВАЖНО! Ключи массива $defaults должны быть в lower-case. Не используйте camelCase или UPPER-CASE, потому что в $atts ключи всегда в lower-case.

$atts(массив) (обязательный)

Неочищенный массив с данными, которые были указаны в шорткоде. Они будут сравниваться с массивом выше.

$atts будет содержать массив аргументов шорткода, которые были указанны пользователем.

Если указать значение без названия параметра, то они будут добавлены в индексные элементы массива. Например для шорткода [name value attr="val2" val3] получим:

Array (
	[0]    => value
	[attr] => val2
	[1]    => val3
)

Имена атрибутов (ключи массива $atts) всегда конвертируются в lower-case (нижний регистр), значения никак не обрабатываются. Например, если мы указали шорткод так [myshortcode FOO="BAR"], то в $atts получим [ 'foo' => 'BAR' ].

$shortcode(строка)

Название шоткода, который будет использоваться в фильтре: shortcode_atts_{$shortcode}.

С версии 3.6. передает параметр $atts в фильтр shortcode_atts_{$shortcode}, если указан параметр $shortcode.

По умолчанию: ''

Примеры

#1. Добавление шорткода

Создадим новый шоткод [bartag] с атрибутами foo и bar: [bartag foo="something" bar="something else"]

add_shortcode( 'bartag', 'shortcode_callback' );

function shortcode_callback( $atts ) {
	$atts = shortcode_atts( array(
		'foo' => 'no foo',
		'bar' => 'default bar',
	), $atts, 'bartag' );

	return 'bartag: ' . esc_html($atts['foo']) . ' ' . esc_html($atts['bar']);
}

// в результате шоткод: [bartag foo="koala" bar="bears"]
// выведет: bartag: koala bears

Оба атрибута шоткода произвольные и если они не указаны в шоткоде, то будут содержать значения по умолчанию.

Список изменений

С версии 2.5.0 Введена.

Код shortcode_atts() WP 5.8

<?php
function shortcode_atts( $pairs, $atts, $shortcode = '' ) {
	$atts = (array) $atts;
	$out  = array();
	foreach ( $pairs as $name => $default ) {
		if ( array_key_exists( $name, $atts ) ) {
			$out[ $name ] = $atts[ $name ];
		} else {
			$out[ $name ] = $default;
		}
	}

	if ( $shortcode ) {
		/**
		 * Filters shortcode attributes.
		 *
		 * If the third parameter of the shortcode_atts() function is present then this filter is available.
		 * The third parameter, $shortcode, is the name of the shortcode.
		 *
		 * @since 3.6.0
		 * @since 4.4.0 Added the `$shortcode` parameter.
		 *
		 * @param array  $out       The output array of shortcode attributes.
		 * @param array  $pairs     The supported attributes and their defaults.
		 * @param array  $atts      The user defined shortcode attributes.
		 * @param string $shortcode The shortcode name.
		 */
		$out = apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts, $shortcode );
	}

	return $out;
}

Из раздела: Шорткоды

Danya 50
Программист фрилансер. Кодингом на PHP занимаю с 2008 года.
Редакторы: Kama 8369
8 комментов
    Войти