В данный пост размещаются различные команды PHP с которыми по мере развития приходится разбиратся, а также некоторые интерессные решения PHP.
Отличный справочник по функциям php.
Вывод на экран показаний переменной
Иногда echo не может вывести переменную, т.к. та может быть преобразова в строку. В этом случае используем print_r
<?php print_r ($category_id); ?>
strip_tags — Удаляет HTML и PHP-теги из строки
<?php echo category_description(); ?> - обычное описание с <p></p>
<?php echo strip_tags(category_description()); ?> - описание без <p></p>
Получить ID текущего объекта (записи, страницы, категории, метки)
<?php $test = get_queried_object_id(); ?>
<?php print_r ($test); ?> — вывести ID
Альтернатива:
$cat_ID = get_query_var('cat'); — id рублики
$cat_name = get_query_var('category_name'); — ярлык рублики
$tag_ID = get_query_var('tag_id'); — id метки
$tag_name = get_query_var('tag'); — ярлык метки
$taxonomy_name = get_query_var('taxonomy'); — название таксономии
$term_name = get_query_var('term'); — ярлык текущего элемента таксономии
Переменная в параметрах
Нужно исключить текущую метку из облака меток (в шаблоне меток), метка исключается по id:
<?php wp_tag_cloud('exclude=44'); ?>
Мы получаем переменную ID текущей метки и тут надо изменить вид параметра + обязательно двойные скобки
<?php $tag_ID = get_query_var('tag_id'); wp_tag_cloud("exclude={$tag_ID}"); ?>
Операторы сравнения
$a == $b | Равно |
$a === $b | Тождественно равно |
$a != $b | Не равно |
$a <> $b | Не равно |
$a !== $b | Тождественно не равно |
$a < $b | Меньше |
$a > $b | Больше |
$a <= $b | Меньше или равно |
$a >= $b | Больше или равно |
Тернарный оператор — ?
<?php $var_1 = 0;
$var_2 = 'true';
$var_3 = 'false';
$test = $var_1 ? $var_2 : $var_3;
echo $test; ?>
Если в переменной $var_1 true, то подставляется $var_2, если false то подставляется $var_3. В примере будет выведено false.
Получить количество записей в массиве
echo count($myposts);
Синтаксис php
.= — знак конкатенации, то есть соединения двух элементов в один.
Пример:
$a = 1;
$a .= 2;
echo $a;
Выведет число 12 (т.к "1"."2"="12")
Из массива в строку и наоборот
Функции implode и explode служат для противоположных целей. implode превращает массив в строку, а explode строку в массив.
Примеры:
$tags_str = implode(',', $tags); // Объединяет элементы массива в строку
$tags_arr = explode(',', $tags); // Разбивает строку с помощью разделителя
Регулярные выражения
Если нам нужно динамически менять окончание слова в зависимости от числительного нам понадобится функция регулярного выражения. Прописываем саму функцию:
function plural_form($number, $after) {
$cases = array (2, 0, 1, 1, 1, 2);
echo $number.' '.$after[ ($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)] ];
}
Можно сделать функцию без вывода самого числа
function plural_form_2($number, $after) {
$cases = array (2, 0, 1, 1, 1, 2);
echo $after[ ($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)] ];
}
И применяем ее там, где это только возможно (в шаблоне комментариев, количество результатов поиска, количество выведенного товара и так далее).
<?php if ($wp_query->found_posts == 0) {
echo 'Нет записей удовлетворяющих запросу';
} else {
echo 'В основном запросе ';
plural_form(
$wp_query->found_posts,
/* варианты написания для количества 1, 2 и 5 */
array('запись','записи','записей')
);
} ?>
Собрать массив терминов
Для того чтобы собрать массив терминов, при переборке другого массива создаем контейнер для массива.
В данном примере мы перебираем записи определенной категории, и у каждой записи проверяем принадлежность термина таксономии brend и записываем их в переменную — $all_brends_ids[].
$poductcatid = get_queried_object_id();
$args = array(
'numberposts' => 5,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $poductcatid
),
),
'post_type' => 'product'
);
$posts = get_posts( $args );
foreach($posts as $post){ setup_postdata($post);
$brends_id = wp_get_object_terms($post->ID, 'brend');
foreach ($brends_id as $brend_id) :
$all_brends_ids[] = $brend_id->term_id;
endforeach;
$all_brends_unique = array_unique($all_brends_ids);
}
wp_reset_postdata();
Чтобы из получившегося массива оставить только уникальные (не повторяющиеся) термины нужно прогнать массив через функцию array_unique.
Проверка: пустая ли переменная
if (empty($unit)) { переменная пуста }
Можно поменять на противоположное значение !empty($unit), т.е. непустой массив.
if (isset($unit)) { переменная определена}
Извлечь первый элемент массива
$brands = get_the_terms( $post->ID, 'pa_brand' );
$brand = array_shift($brands);
Арифметические операторы
+$a | Идентичность* |
-$a | Отрицание (смена знака) |
$a + $b | Сложение |
$a — $b | Вычитание |
$a * $b | Умножение |
$a / $b | Деление |
$a % $b | Деление по модулю** |
$a ** $b | Возведение в степень |
* Конвертация $a в int или float, что более подходит
** Целочисленный остаток от деления $a на $b
Разрядность
Вывод числовых значений (например стоимость) с разрядностью на тысячи, миллионы и т.д.:
<?php echo number_format($number, 0, '', ' '); ?>
Оставить в строке только числа
$str1 = "Строка, в которой присутствуют цифры 12345";
$str = preg_replace("/[^0-9]/", '', $str1);
echo $str; // выведется только 12345
Проверка функции mail
Вставляем в шаблон любой страницы и переходим на нее
<?php if (mail("test@mail.ru", "заголовок", "текст")) { echo 'Отправлено'; } else { echo 'Не отправлено'; } ?>
[site-socialshare]