Рассмотрим что такое переменные (variables) в языке программирования PHP и их использование. Кроме того мы поговорим о переменных сразу с практической точки зрения на примерах использования переменных в разных CMS (например, WordPress).
Знакомство с переменными в PHP и WP
Вы, наверное, уже видели код, который включает знак $ (доллар) в PHP коде:
$output
Это то, что в языке PHP называется переменной. WordPress использует в коде тысячи переменных. Если вы хотите узнать больше о программировании, то вам нужно знать всё про переменные.
Переменная — это то, что вы можете создать (объявить) и использовать в PHP-коде вот так:
add_action( 'genesis_after_header', 'using_variables' );
function using_variables() {
$text = "Hello World";
echo $text;
}
Это пример использования переменных в WordPress.
Суть простая — переменную можно считать неким ящиком в котором что-либо хранится.
Имена переменных
Когда Вы создаете переменную, Вы всегда начинаете со знака доллара $, а затем создаете описательное имя для переменной, подобное этому:
$My_Name
После того, как вы создали переменную, вы можете присвоить ей значение следующим образом:
$My_Name = "Brad";
Теперь, когда у переменной появилось значение, вы можете вывести или распечатать значение для вашей переменной таким образом:
$My_Name = "Brad";
echo $My_Name;
Имена переменных с учетом регистра
Этот код не будет работать:
add_action( 'genesis_after_header', 'case_sensitive_variable' );
function case_sensitive_variable() {
$My_Name = "Brad";
echo $my_name;
}
И этот не будет:
add_action( 'genesis_after_header', 'uppercase_lowercase_variables' );
function uppercase_lowercase_variables() {
$My_Name = "Brad";
echo $MY_NAME;
}
Числа в именах
Использование чисел в переменных возможно. Рассмотрим это на паре примеров.
Это не сработает:
add_action( 'genesis_after_header', 'case_sensitive_variable' );
function case_sensitive_variable() {
$1my_name = "Brad";
echo $1my_name;
}
Этот код работает:
add_action( 'genesis_after_header', 'numbers_in_variables' );
function numbers_in_variables() {
$my1_name = "Brad";
echo $my1_name;
}
Еще раз повторим — переменные всегда должны начинаться со знака доллара $
, за которым следует символ или подчеркивание.
Вывод переменных
Теперь мы можем подключить приведенный выше код и вывести значение переменной в пользовательской функции (в файле функций темы) следующим образом:
add_action( 'genesis_after_header', 'using_variables' );
function using_variables() {
$My_Name = "Brad";
echo $My_Name;
}
Или мы можем обернуть код открывающими и закрывающими тегами PHP и использовать код в файле шаблона следующим образом:
<?php
$My_Name = "Brad";
echo $My_Name;
?>
Вышеупомянутая переменная работает только в внутри той функции, которая определена, что означает, что вы не можете взять переменную $My_Name
и использовать ее в другой функции, например:
add_action( 'genesis_before_header', 'using_variables_in_other_functions');
function using_variables_in_other_functions() {
echo $My_Name;
}
Единственный способ использовать переменную в другой функции — изначально объявить ее вне функции (в вашем файле функций):
$My_Name = "Brad";
// дальше идут функции, где будет использоваться переменная
Вам нужно будет использовать ключевое слово global
следующим образом:
add_action( 'genesis_after_header', 'using_variables' );
function using_variables() {
global $My_Name;
echo $My_Name;
}
Переменные в Genesis
Для примера рассмотрим использование PHP переменных в Genesis — фреймворке от StudioPress.
Следующий код включает 2 переменные с именами $link
и $output
:
add_action( 'genesis_after_header','variable_output' );
function variable_output() {
$link = esc_url( 'http://example.com' );
$output = sprintf( '<a href="%s">' . __( 'Your link text here' ) . '</a>', $link );
echo $output;
}
Следующий код включает в себя 1 переменную с именем $link
, которая равна постоянной ссылке на статью:
add_action( 'genesis_after_header','variable_output' );
function variable_output() {
$link = esc_url( get_permalink() );
printf( '<a href="%s">' . __( 'Link text' ) . '</a>', $link );
}
В приведенном выше коде для вывода форматированной строки используется printf.
Этот фрагмент кода позволяет вам изменить значение по умолчанию для исходной переменной, уже объявленной в Genesis, через файл функций дочерних тем, используя функцию фильтра.
//* изменить текст заголовка комментария в комментариях
add_filter( 'genesis_title_comments', 'sp_genesis_title_comments' );
function sp_genesis_title_comments() {
$title = '<h3>Обсуждение</h3>';
return $title;
}
Понимание того, как работают переменные, упростит понимание того, как читать и писать пользовательские функции фильтра для изменения значения по умолчанию для переменной, уже включенной в Genesis или WordPress.