В данный пост размещаются различные команды 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 Больше или равно

Получить количество записей в массиве

echo count($myposts);

Синтаксис php

.= — знак конкатенации, то есть соединения двух элементов в один.
Пример:

$a  = 1;
$a .= 2;
echo $a;
Выведет число 12*(т.к "1"."2"="12")*

Из массива в строку и наоборот

Функции implode и explode служат для противоположных целей. implode превращает массив в строку, а explode строку в массив.
Примеры:

$exclude_tags = implode(',', $tag_ids_unique); // Указываем разделитель которым будут разделятся элементы в строке
$tags = explode(",", $_GET['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
Мобильная версия сайта
Рекомендации для васМобильная версия сайтаOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.