Это не курс, это мой конспект, к которому обращаюсь, когда внедряю на свои сайты очередной функционал.
В чем отличие PHP от PHP под WordPress? Только в том, что большинство кода уже написано, и остается лишь его вызвать. Чтобы это сделать необходимо понимать, как устроен язык из чего он состоит.
Переменные
Переменная присваивается так:
$a = 9;
$ обязательно. = означает присвоить. Переменной можно присвоить значение, функцию или подтянуть значение с любой страницы.
Типы данных
Данные в PHP бывают:
- integer (int) — целые числа;
- float — дробные числа;
- string (str) — строка (текст);
- array — массив.
Массивы
Массив — это структура данных, хранящая набор значений. В массиве могут хранится любые типы данных. В WordPress мы в 99,9% храним текст (string).
Нумерация элементов массива начинается с 0. Массиву присваивается переменная, а вызывается в квадратных скобках — $e[2], — выведется 3й элемент массива, присвоенный переменной e.
Простой массив
Хранит только данные.
$e = array( 'Ihor', 'Serdiukov', '34', 'webmaster', );
Вывод элемента массива:
echo $e[2];
На экране увидим: 34.
Ассоциативный массив
Массив, помимо данных может содержать и ярлыки, такой массив называется ассоциативным.
$e = array ( 'name' => 'Ihor', 'sname' => 'Serdiukov', 'age' => '34' )
Чтобы, в данном примере, вывести фамилию нужно написать:
echo $e['sname'];
Многомерный массив
Массив может содержать другой массив, а тот массив еще один массив, и так до бесконечности. В моем блоке «Биография по годам», как раз используется многомерный массив:
$value = array(2) { ["number"]=> string(4) "2022" ["events"]=> array(2) { [0]=> array(2) { ["color"]=> string(14) "красный" ["text"]=> string(25) "текст события" } }
Выводится элемент многомерного массива так:
echo = value['events']['color'];
Но чаще всего массивы перебираются с помощью циклов.
Циклы
Есть 3 вида циклов:
- for — повторяет одно и то же действие нужное количество раз;
- while — выполняется до тех пор, пока верно (истинно) выражение, переданное ему параметром;
- foreach — используется для перебора массива.
Синтаксис:
Цикл for: for (начальные команды; условие окончания цикла; команды после прохода цикла) { тело цикла } Цикл while: while (пока выражение истинно) { код, который выполнится много раз; } Цикл foreach: foreach ($arr - имя_массива as $elem – переменная_для_элемента_массива) { Код, который находится между фигурными скобками будет повторяться столько раз, сколько элементов у массива. }
Признаться честно, я пока с циклами работаю так себе.
Конкатенация
Конкатенация — это объединение нескольких переменных или частей кода в одну строку с разделителем.
echo $a . 'разделитель' . $b;
Разделителем может быть любой символ или текст.
Условия
Именно условия я использую чаще всего. Условие может быть:
- простым – if (условие) {выполнить код};
- двойным – if (условие) {выполнить код} else {иначе, выполнить код};
- многомерным – if (условие) {выполнить код} elseif (условие) {выполнить код} else {иначе, выполнить код}.
Сами условия могут быть следующими:
- == – равно;
- != – не равно;
- >= – больше либо равно;
- <= – меньше либо равно;
- > – больше;
- < – меньше;
Но чаще всего я использовал проверку на заполнение произвольного поля, выглядит так:
<?php if (get_field('celebName1')) { ?> блок кода <?php } ?>
Дебаг
Умение разобраться в проблеме, это по сути основа начинающего программиста. Мне в этом помогли 2 инструмента:
- плагин Query Monitor. Он выводит ошибки, показывает строку где косяк;
- подсветка кода, особенно фигурных скобок, в которых я постоянно путался. Для подсветки кода я использовал Visual Studio от Microsoft, с плагином, который раскрашивает фигурные скобки;
- команда var_dump().
По синтаксису var_dump:
var_dump(переменная);
И в коде появится значение переменной. Это нужно, когда в коде есть несколько переменных, и ошибка не в последней.
Ковычки
Разница между » и «»:
- Если нужно вывести только текст, то пишем ‘тут любой тест без беременных’.
- Если в коде содержится переменная, которую нужно вывести, то пишем в «Мой возраст: $j».
Используйте обратный слэш \ для того, чтобы символы не воспринимались именно как эти символы, а как обычный текст:
echo 'It\'s a beautiful life.';
HTML внутри переменной
Есть два способа присвоить переменной какой-то кусок кода:
Пример 1: $Value = <<<HTML <div class="class32"> <a class="card" href="{$link}"> <img class="{$celclass}" src="{$img}" alt="{$alt}"> <div class="card__top"> <img class="{$celebclass2}" src="{$img}" alt="{$alt}"></div> <p class="card__name">{$title}</p> </div> </a> </div> HTML; Пример 2: $Value = $MovieTheatreTerm->name.' '.'<span class="description">('.$MovieTheatreYears.')</span>';