Функция printf в PHP и WordPress

Рассмотрим использование функции PHP printf в WordPress, которая выводит отформатированную строку.

Официальная документация PHP — printf

Вероятно, вы видели в своих файлах код, который выглядит так:

printf('%s World', $var );

Этот код включает функцию printf(), которая в большинстве случаев более эффективна, чем использование функций echo или print.

Чтобы узнать больше об использовании кода PHP в WordPress вам необходимо понять, как работает функция printf.

Функция printf обычно включает знак процента % с символом s для строк:

%s

Можно printf использовать вместо функции print или echo, поэтому вместо этого:

echo "Hello World";

Или этого:

print( 'Hello World' );

Вы можете использовать printf следующим образом:

printf('%s World', "Hello" );

Знак процента % с буквой s работают как плейсхолдер, который преобразуются при выполнении кода. В приведенном выше случае %s заменяется текстом Hello.

Вот полный рабочий код, который вы можете протестировать в файле функций темы WordPress:

add_action('loop_start','printf_example1' );

function printf_example1() {
    printf('%s World', 'Hello' ); 
}

Затем вы можете заменить текст Hello переменной, чтобы значение переменной $text стало равно Hello:

$text = 'Hello';

Полный рабочий код, который вы можете протестировать в файле функций темы, будет следующим:

add_action('loop_start','printf_example2');

function printf_example2() {
    $text = 'Hello';
    printf('%s World', $text ); 
}

В темах WordPress вы найдете код, использующий printf, который вы можете вставить в файл functions.php дочерней темы, чтобы увидеть, как он работает:

add_action('loop_start','printf_example3');

function printf_example3() {
    printf( '<a href="%s">' . esc_html__( 'Your link text here', 'text-domain' ) . '</a>', 'http://example.com' ) ); 
}

В приведенном выше коде используется printf с одним экземпляром %s, который заменяется URL-адресом http://example.com при выполнении функции.

Приведенный выше код также можно записать так:

add_action('loop_start','printf_example4');

function printf_example4() {

    $link = esc_url( get_permalink() );
    $text = "Value for Your Text Variable";

    printf( '<a href="%s">%s</a>', $link, $text );
}

В этом случае мы заменили URL-адрес переменной с именем $link. Мы также заменили текст переменной с именем $text.

Значение переменной $link равно постоянной ссылке статьи, а не URL-адресу example.com, а значение переменной $text равно тексту.

Вы также заметите, что каждый параметр в строке разделен запятой, например:

$link, $text

При выполнении кода первый заменитель %s заменяется первым параметром, который в данном случае является переменной $link, равной get_permalink();.

После замены 1-го %s, 2-й, 3-й и т.д. заменяются шаг за шагом в порядке, в котором они встречаются в строке, разделенной запятой.

Справка. Порядок заполнителей %s должен соответствовать порядку аргументов в коде.

Вы также можете написать код следующим образом:

add_action('loop_start','printf_example5');

function printf_example5() {
    $text = "Value for Your Text Variable";

    printf( '<a href="%s">%s</a>', esc_url( get_permalink() ), $text );
}

Таким образом, 1-й параметр будет равен функции get_permalink, а не значению переменной $link, как в предыдущем примере.

printf и sprintf

Функция printf используется для вывода отформатированной строки. Пример:

add_action('loop_start','printf_example6' );

function printf_example6() {
    printf('%s World', 'Hello' ); 
}

Функция sprintf возвращается в качестве значения для переменной, которая будет использоваться позже, после чего переменная может быть выведена с помощью echo или printf. Пример:

add_action('loop_start','printf_example7' );

function printf_example7() {
   $output = sprintf('%s World', 'Hello' ); 
   echo $output;
}

Если вы хотите что-либо добавить к статье — пишите в комментариях.

Оставить комментарий

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

Вы можете использовать эти HTML теги:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>