Ivseti
@Ivseti
Фронтенд HTML, CSS и немного JS с PHP

Как в WordPress найти категорию Misc в массиве?

Собственно целый день пытаюсь найти в массиве неудаляемую категорию Misc, так как мне ее надо скрыть. Распишу, все поэтапно:

Вывел хуком список всех категорий:
function get_categories_product($categories_list = "", $parent_id = 0, $inumberPlus = 0) {

	$get_categories_product = get_terms("product_cat", [
		"orderby" => "name", // Тип сортировки
		"order" => "ASC", // Направление сортировки
		"hide_empty" => 0, // Скрывать пустые. 1 - да, 0 - нет.
		"hierarchical" => 1,
		"parent" => $parent_id
	]);

	

	if(count($get_categories_product) > 0) {

		if($parent_id == 0) {

			$categories_list .= '<ul class="main_categories_list">';

			$inumberPlus = 0;

		} else {

			$inumberPlus++;

			$categories_list .= '<ul class="sub_categories_list sub_categories_list_'.$inumberPlus.'">';

		}

		foreach($get_categories_product as $categories_item) {

			$categories_list .= '<li><a href="'.esc_url(get_term_link((int)$categories_item->term_id)).'">'.esc_html($categories_item->name).'</a>';
			$categories_list .= get_categories_product("", $categories_item->term_id, $i);
			$categories_list .= '</li>';
		}

		$categories_list .= '</ul>';
	}

	return $categories_list;
}


Вверху списка у меня, как раз выводится категория Misc, ее я и начал искать в массиве.
<?php 


$getMassivmenu = get_terms("product_cat");

if (in_array("Агрохимикаты", $getMassivmenu)) {
    echo "Нашёл Агрохимикаты";
}
if (in_array("Misc", $getMassivmenu)) {
    echo "Нашёл Misc";
} else {echo "Ничего не нашел";}


print('<pre>');
var_dump ($getMassivmenu);
print('</pre>');
?>


Вывел я все, что есть в массиве, массив, как я понимаю находится в объекте object(WP_Term) ... что добавило мне еще сложностей. Через var_dump увидел основные данные, но он мне почему-то вывел не все, предположительно только те категории, где есть товары, категории Misc(неудаляема категория WC) там нет.
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
@Anonimmus
Misc - категория по умолчанию. В настройках wp можно его сменить например на "основной каталог" а затем misc удалить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Misc это что за сущность? Заголовок? Тогда нужно получить массив заголовков и в них искать

$getMassivmenu = get_terms(
	'taxonomy' => 'product_cat',
	'fields' => 'names'
);

if ( in_array( 'Агрохимикаты', $getMassivmenu ) ) {
	echo 'Нашёл Агрохимикаты';
}
if ( in_array( 'Misc', $getMassivmenu ) ) {
	echo 'Нашёл Misc';
} else {
	echo 'Ничего не нашел';
}


Чтобы не мучаться, добавьте эту функцию в вашу тему и печатайте переменные vardump( $var )

function vardump( $var ) {
	if ( current_user_can( 'manage_options' ) ) {
		echo '<pre>';
			var_dump( $var );
		echo '</pre>';
	}
}
Ответ написан
@Dmitry_Novik
Можно через "Админку" посмотреть в категориях ее id, а затем в get_terms('exclude' =>id).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы