Что означает токен %1$s в WordPress
Прочитайте документацию PHP по функции sprintf().
%s
— это просто заполнитель для строки%d
— это просто заполнитель для числа
Пример использования sprintf выглядит следующим образом:
$variable = sprintf(
'The %s ran down the %s', // Строка с заполнителями
'dog', // Подставляется в первый %s
'street' // Подставляется во второй %s
);
В результате в переменную $variable
будет записана строка:
Собака побежала по улице
Нумерация заполнителей делает код более понятным для разработчика, позволяя быстро определить, какая строка куда подставляется. Это также позволяет повторно использовать строки. Рассмотрим другой пример с нумерованными заполнителями:
$variable = sprintf(
'The %1$s ran down the %2$s. The %2$s was made of %3$s', // Строка с заполнителями
'dog', // Всегда будет использоваться в %1$s
'street', // Всегда будет использоваться в %2$s
'gravel' // Всегда будет использоваться в %3$s
);
В результате в переменную $variable
будет записана строка:
Собака побежала по улице. Улица была сделана из гравия
Наконец, функция __()
позволяет переводить передаваемые ей строки. Передавая заполнители в __()
, а затем всю строку в sprintf()
, мы можем переводить всё, что передаётся в функцию перевода, что делает наши строки и приложение более динамичными.

Это не особенность WordPress, а особенность PHP. %1$s
, %2$s
и т.д. являются плейсхолдерами для переменных в форматированной строке, возвращаемой функцией sprintf()
(или выводимой функцией printf()
).
1$
означает, что это первая переменная, 2$
- вторая, и так далее. Буква s
указывает, что это переменная типа строка. Существуют и другие варианты (например, d
обозначает целое число).
В вашем примере приведена неполная конструкция: полностью она, скорее всего, выглядит так:
sprintf( __( '%1$s устарела. Вместо неё используйте %2$s.' ),
$string_1,
$string_2 );
