PHP в WordPress. Что нужно знать? Прямо ну вообще с нуля.

Весь WordPress написан на PHP. Поэтому для того, чтобы создавать или редактировать темы, или писать плагины, вам нужно знать некоторые вещи.

На моем блоге также есть пост про использование MySQL в WordPress — о том, как правильно создавать запросы, используя предназначенный для этого класс $wpdb.

Это немного дополненный старый пост, поэтому тут уже сотня комментов 🙂

Конечно, очень наивно полагать, что возможно охватить все основы PHP в одной статье, но я очень постараюсь.

Одна простая истина. Или даже две. #

Я буду предполагать, что вы уже знаете HTML, и в статье буду это подразумевать как само собой разумеющееся.
Вам ничего не стоит создать у себя на рабочем столе текстовый файл, назвать его file.html и начать фигачить туда HTML код страницы. И у вас всё получится, в браузере всё откроется, но вот только если там будет содержаться PHP-код, то он не выполнится! JavaScript выполнится, вы уже знаете, а вот PHP нет.

Есть такая вещь, как локальный сервер Apache… Знаете? Прекрасно — можете использовать. Но мы сейчас идём по лайту и поэтому я скажу следующее — чтобы выполнить PHP код, вам нужно 1) зарегать хостинг 2) использовать PHP-код внутри файлов с расширением .php.

Это была первая истина.

Вторая истина заключается в том, что сам код PHP должен находиться внутри <?php и ?>. Это как JavaScript находится между <script> и </script>. Вы даже можете использовать спокойно HTML внутри .php-файлов, главное, чтобы сам исполняемый код был внутри этих скобок. Это вторая истина. Пример:

<h1><?php

// здесь будет какой-то PHP код

?></h1>
О, так я и с комментариями вас познакомил! Когда строка начинается с //, то всё, что идёт дальше этих символов на строке, кодом не воспринимается, то есть это просто пометки для самого кодера. Для вас!

Функции. Часть 1. #
Всё основывается на функциях. Функция — эта такая штуковина, в которую мы можем передать какие-то значения (но не всегда) и она порадует нас каким-то результатом (но тоже не всегда).

Начнём с невероятно простых вещей. Создайте .php-файл у вас на сервере и вставьте туда этот код:

<?php
phpinfo()
?>
После этого откройте файл в браузере, например http://вашсайт/test.php или же просто http://вашсайт, если вы назвали свой файл index.php (да, index.php — этот тот файл, который открывается в папке (директории) по умолчанию, если в URL вы обращаетесь именно к папке, а не к файлу).

В общем, функция phpinfo() просто выведет инфу о сервере. Понятную и не очень.

А что, если мы хотим продолжить в этом же файле, например в начале или в конце мы ещё выведем текущий год. Так вот, вторую функцию вы можете вставить с новой строки, а можете продолжать на этой же — главное лишь наличие точки с запятой между ними!

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

<?php
phpinfo(); // возьмите за привычку после любого действия в PHP-коде сразу ставить «;»
echo date( ‘Y’ ); // параметр ‘Y’ как раз означает вывод года.
?>
Тут один момент — сама функция date() не выводит дату, а только возвращает (сейчас вы узнаете, что это), а phpinfo() сразу выводит. Поэтому перед функцией date() мы ещё добавили echo, что как раз означает вывод. Сейчас расскажу подробнее.

Числа, строки и… #
Да, начнём с функции echo (вы заметили, что она без скобочек? да, ей скобки не нужны). Выведем какое-то число:

echo 12345; // скобки <?php я не буду ставить в каждом коде для своего удобства 🙂
Всё просто, верно?

Для строк (это по сути текст) нам просто нужно обрамлять их в двойные или одинарные кавычки. Например:

echo ‘Привет 123’;
Тут так же хочу обратить ваше внимание, если внутри находятся ещё одни кавычки, то их нужно экранировать или использовать другие. Например, если нам нужно вывести It’s a beautiful life., то можно сделать это двумя способами:

echo «It’s a beautiful life.»;
Или

echo ‘It\’s a beautiful life.’;
Используйте обратный слэш \ для того, чтобы символы не воспринимались именно как эти символы, а как обычный текст.

Переменные #
Для тех, кто совсем-совсем начинающий, что такое переменные?

Как бы это объяснить, сейчас это слово подразумевается как какая-то ну совсем очевидная вещь. Начнём с того, что переменная, это какое-то слово (или набор символов — весь латинский алфавит, цифры, знак подчеркивания и… начинаться должно с символа алфавита и…вроде всё?). В PHP перед этим словом ещё ставится знак доллара, та-дам, всеми любимый из математики $x. С единственным тем отличием, что в матеме во многих случаях нужно было найти его, и даже если его не нужно было находить, мы его всё равно не знали, тут же мы всегда примерно знаем его значение.

Теперь давайте предположим, что у нас есть какой-то кусочек контента, например кусок текста или офигенно сложное для запоминания число. И чтобы долго с ним не возиться, в один прекрасный момент мы записываем его в $x, например вот так:

$x = 1234567890;
Знак равно это очень важная в программировании вещь (да-да, именно вещь — не собираюсь загружать вас терминами), которую мы назовем словом присваивание, то есть у нас был какой-то $x (а может его и не было вовсе), затем мы взяли и присвоили ему значение 1234567890 и теперь $x равен этому значению.

Теперь мы уже можем вывести не число, а именно переменную:

$x = 1234567890;
echo $x;
И ещё один супер-пример. Предположим. Что нам нужно вывести число 7 раз! Не уверен, что такое понадобится, но предположим!

А теперь скажите, какой вариант кода вам нравится больше — первый или второй.

Это первый:

echo ‘1234567890’;
echo ‘1234567890’;
echo ‘1234567890’;
echo ‘1234567890’;
echo ‘1234567890’;
echo ‘1234567890’;
echo ‘1234567890’;
Это второй:

$x = ‘1234567890’;
echo $x;
echo $x;
echo $x;
echo $x;
echo $x;
echo $x;
echo $x;
Ну что? А если я скажу вам изменить это число, то где вы быстрее внесёте изменения — в первом куске кода или во втором?

Действия с переменными
Обычные действия: присвоение, сложение, умножение, деление, вычитание.

$privet=’привет чуваки!’;
$r = 1; $go = 4;
$r = $r + $go;
$r = 4 + $r / 5;
$r = 2 * ($r — $go);
$r++; // это означает $r=$r+1;
$r—; // $r=$r-1;
Не забывайте в конце каждого действия в PHP ставить точку с запятой, иначе вылезет ошибка.

Объединение переменных:

$privet = ‘привет’;
$znak = ‘!’
$result = $privet . ‘ чуваки’ . $znak; // $result будет равно ‘привет чуваки!’
$result = $privet . $znak; // теперь $result будет равно ‘привет!’
… и массивы #

Массивы — это ну очень важная вещь, в двух словах постараюсь их описать, но рекомендую поискать больше информации о них и попрактиковаться в их использовании.
Смотрите, переменная может содержать число, может содержать строку (какой-то текст или символы), а может содержать массив, который является последовательностью из разных чисел, текста и чего угодно в общем-то, даже других массивов и более страшных вещей!

Например 1, 2, ‘текст’, 98 — это массив из четырех элементов, при этом отсчет начинается с нуля — нулевой элемент равен единице, первый — двойке, третий — строке текста и т.д.

Давайте зададим этот нехитрый массив в переменную:

$massivchik = array( 1, 2, ‘текст’, 98);
Что с ним делать-то теперь? На самом деле много чего, в документации PHP вы можете посмотреть функции, которые могут удалять элементы массива, сортировать их и т д, а мы же выведем из него второй элемент — двойку.

echo $massivchik[1]; // выведет 2
// если же хотите вывести абсолютно весь массив, то print_r( $massivchik );
Давайте добавим ему пятый элемент:

$massivchik[] = ‘ну массив’; // array( 1, 2, ‘текст’, 98, ‘ну массив’);
Вы обратили внимание, что у каждого элемента массива есть свой числовой индекс? Запомните этот важный момент.

А теперь представляю вам ассоциативные массивы! Это когда помимо числового индекса, у элементов есть ещё и строковый индекс, ключ. Зададим массив.

$supermassive = array( ‘chislo’ => 1, ‘text’ => ‘Privet’, ‘text2’ => 19303 );
Думаю не нужно объяснять, что названия ключей должны быть уникальны. И небольшой пример вывода по ключу:

echo $supermassive[‘chislo’];
// а может мы просто хотим присвоить элемент массива в отдельную переменную, тогда $y = $supermassive[‘chislo’];
А ещё мы можем изменить значение элемента:

$supermassive[‘chislo’] = 5; // точно так же кстати можно добавить и новый элемент
Ну всё, говорю же, старался покороче 🙂 Если есть вопросы — скидывайте в комментарии к посту.

Функции. Часть 2. #
Как вы уже возможно поняли, функции в PHP выглядят следующим образом:

название_функции(параметры_через_запятую);
В PHP и в WordPress уже существует набор готовых функций, которые удобно использовать при создании блога. Также вы можете задавать и свои функции:

function название_функции( параметры_в_виде_переменных ){
выполняющийся код;
}
Примеры:

Функция echo выводит на экран то, что указано в ней, иногда пишется со скобками, но я пишу без. Да, знаю, что уже упоминал её, но практики лишней не будет.

$privet = ‘привет’; // для удобства зададим переменную
echo ‘привет’; // выведет привет
echo $privet; // привет
echo $privet . ‘ чуваки’; // привет чуваки
echo ‘$privet чуваки’; // $privet чуваки
echo «$privet чуваки»; // привет чуваки
// видите разницу между двойными и одинарными кавычками? В одинарных кавычках переменные воспринимаются как текст, а в двойных как переменные.
Вот так всё это можно засунуть в HTML-код:

<h1><?php echo $privet ?></h1>
Зададим собственную функцию:

function privet(){
echo ‘привет’;
}
После того, как функция задана (в WordPress они все обычно задаются в файле functions.php в темах — для начала задавайте там, а потом разберетесь), её можно использовать в любой части сайта сколько угодно раз:

<h1><?php privet(); ?></h1><span><?php privet(); ?></span>
Теперь создадим функцию с параметрами:

function hello( $m, $n = ‘значение по умолчанию’ ){ // у переменных можно указать значения по умолчанию, тогда параметр становится необязателным
echo $m . ‘ ‘ . $n; // кавычки здесь нужны, чтобы вывести пробел между словами
}
// пример выполнения
$privet = ‘привет’;
$dude = ‘чуваки!’;
hello( $privet, $dude ); // после того, как начинает действовать функция, эти переменные превращаются в $m и $n в том же порядке, в котором указаны
Параметры $m, $n существуют только внутри функции, то есть под конец они уничтожаются, поэтому перед тем, как функция закончится, их надо либо вывести, либо сохранить их значения в других переменных. Для этого существует функция return

function hello( $m, $n ){
$m = $m . ‘ ‘ . $n; // как видите, так тоже можно изменять значение переменной
return $m;
}
Пример выполнения 1.

$privet = ‘привет’;
$dude = ‘чуваки!’;
$result = hello( $privet, $dude ); // $result будет присвоено значение $m
echo $result;
Пример выполнения 2, результат будет одинаковый.

$privet = ‘привет’;
$dude = ‘чуваки!’;
echo hello( $privet, $dude );
Также существуют такие вещи как return true и return false — это логическое ДА и логическое НЕТ — они в основном нужны для условий, о них уже в следующей главе.

Условия: #
if (условие) { // если действие только ОДНО, то { } скобки не обязательны
действие;
} elseif (условие) { // второе условие, в случае, если первое не выполняется
действие;
} else { // в случае если ни одно из условий выше не выполняется
действие;
}
Примеры:

if($x == 2) echo $x; // если $x равен 2
if($x != 2) echo $x; // если $x не равен 2
if($x < 2) echo $x;
if($x > 2) echo $x;
if($x <= 2) echo $x; // если $x меньше или равно 2
if($x >= 2) echo $x; // если $x больше или равно 2
if($x) echo $x; // если $x существует и не равен нулю
if(isset($x)) echo $x; // если $x существует и возможно равен нулю
if(!$x) echo $x; // если $x не существует, но возможно равен нулю
if(!isset($x)) echo $x; // если $x не существует и не равен нулю
Несколько условий:

if($x==2 && $y < $x) echo $y; // если $x равен двум И (должны выполняться одновременно оба условия) $y меньше $x
if($x==2 || $y < $x) echo $y; // если ИЛИ $x равен двум ИЛИ (получается должно выполняться хотя бы одно условие) $y меньше $x
Пример посложнее:

if(isset($result)) {
if($result<5) {
echo ‘$result = ‘.$result.'<br />’;
echo ‘значение переменной меньше 5’;
} elseif ($result>5) {
echo ‘$result = ‘.$result.'<br />’;
echo ‘значение переменной больше 5’;
} else echo ‘значение переменной равно 5’;
} else echo ‘$result не существует’;
Циклы #
Есть несколько видов циклов, но нам пока будет достаточно самого распространённого:

while(условие){ // до тех пор пока условие выполняется, действие будет повторяться
действие;
}
Пример:

$result=0;
while($result<5) {
echo $result; $result++;
} // в результате этот код выведет цифру 01234
Также добавлю, что когда у нас имеется какой-то массив и нам нужно прокрутить его через цикл, например вывести все его элементы, то это очень удобно сделать через цикл foreach().

$numbers = array( 1, 4, 7, 9 );
foreach ( $numbers as $number ) { // для каждого элемента массива
// тут $number уже — конкретный элемент массива для конкретного итерации массива (повторения)
echo $number;
} // должно получиться просто 1479
Альтернативные записи условий и циклов
В WordPress всё это часто записывается в другом виде, но смысл остаётся тем же:

if(условия) :
действия;
elseif(условия) :
действия;
else :
действия;
endif; // конец условия
while(условия) :
действия;
endwhile; // конец цикла
Примеры на этот пункт вы найдёте практически в любой теме для WordPress.

Смотрите также
Работа с базой данных в WordPress. Объект $wpdb
HTML, первые шаги, только самое необходимое
beget – хостинг, на котором находится сайт misha.agency уже более 5 лет

Добавить комментарий

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

Переводчик »