Функция shortcode_atts() в WordPress: описание, примеры, важные моменты

Функция shortcode_atts() в WordPress

Функция shortcode_atts() была добавлена в WordPress с версии 2.5.0 и используется для обработки атрибутов шорткодов. Она помогает объединить заданные пользователем атрибуты со стандартными атрибутами и заполнить недостающие значения по умолчанию.

Описание функции

Функция принимает три параметра:

  • $pairs (массив) – список поддерживаемых атрибутов и их значений по умолчанию. Этот параметр обязателен.
  • $atts (массив) – пользовательские атрибуты, указанные в теге шорткода. Этот параметр тоже обязателен.
  • $shortcode (строка) – имя шорткода, которое используется для фильтрации. По умолчанию пустая строка.

Функция возвращает массив, который содержит только те атрибуты, которые указаны в $pairs. Если в списке $atts есть неподдерживаемые атрибуты, они будут проигнорированы.

Пример использования

Создание шорткода

Чтобы создать новый шорткод [bartag], который поддерживает два атрибута: foo и bar, можно использовать следующий код:

add_shortcode( 'bartag', 'shortcode_callback' );

function shortcode_callback( $atts ) {
    $atts = shortcode_atts( 
        [
            '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
  • [bartag foo="koala"] выведет:

    bartag: koala default bar

Важные моменты

Регистр ключей массива

Следует учитывать, что регистр (верхний или нижний) ключей в массиве $pairs должен совпадать с ключами в массиве $atts. Если регистр не совпадает, значение будет проигнорировано.

Пример:

print_r( shortcode_atts( [
        'CAPITAL' => '1',
        'fooBar'  => '2',
    ], [
        'CAPITAL' => '3',
        'fooBar'  => '4',
    ] 
) );

// Вывод: Array ( [CAPITAL] => 3 [fooBar] => 4 )

Если ключи в $atts будут написаны в нижнем регистре:

print_r( shortcode_atts( [
        'CAPITAL' => '1',
        'fooBar'  => '2',
    ], [
        'capital' => '3',
        'foobar'  => '4',
    ]
) );

// Вывод: Array ( [CAPITAL] => 1 [fooBar] => 2 )

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

Пример реализации функции

Вот пример реализации самой функции shortcode_atts():

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 ) {
        $out = apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts, $shortcode );
    }

    return $out;
}

Заключение

Функция shortcode_atts() является полезным инструментом для работы с шорткодами в WordPress. Помня о важных моментах, таких как регистр ключей, вы сможете легко управлять атрибутами шорткодов и использовать их в своих проектах.

Leave a Reply

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