/ Wordpress / PHP

PHP

HIT

14.06.2015

2745

В данный пост размещаются различные команды 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 'Не отправлено'; } ?>

Поделиться в соц. сетях:

  • Комментарии
  • Вложения

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

Пока нет комментариев. Будь первым!

PHP
Поле для вариативного товара
Рекомендации для васПоле для вариативного товараOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.