RuCoder

Search
Close this search box.
Search
Close this search box.

Удалям категории в которых нет товаров

Удалям категории в которых нет товаров

Задача. Есть 4000 штук категорий, из них больше половины пустые. Нужно удалить все категории которые не имеют товаров.

Решение. Способ решения зависит от ситуации. Например, когда есть доступы к базе данных mysql то задачу можно решить одной строчкой кода. В данной ситуации имеем доступ только к админке. По этому решено сделать это через функцию.

1) — Создаём php файл, Закидываем в него код который указан ниже, называем его delete_empty_categories.php и закидываем его в корень сайта! Не забудьте сделать бэкап товаров!!!

				
					<?php
header('Content-Type: text/plain');
error_reporting(E_ALL);
ini_set('display_errors', 1);

require_once('wp-load.php');

ini_set('max_execution_time', 300); // установить максимальное время выполнения скрипта

function delete_empty_categories() {
   $args = array(
      'taxonomy' => 'product_cat',
      'hide_empty' => false,
   );
   $categories = get_categories($args);
   
   foreach($categories as $category) {
      if ($category->category_count == 0) {
         wp_delete_term($category->term_id, 'product_cat');
      }
   }
}

delete_empty_categories();

if (count($categories) > 0) {
    echo "Empty categories have been deleted.";
} else {
    echo "No empty categories to delete.";
}
?>
				
			
2) — Переходим по пути ваш Сайт.ру/delete_empty_categories.php и ждём пока функция выполнит удаление пустых категорий.
3) — После удаления всех пустых категорий удалите файл delete_empty_categories.php

Подробнее разберём файл

*Конструкция <?php … ?> используется для обозначения блока PHP-кода в документе. PHP-код начинается с <?php и заканчивается ?>.

 

*header(‘Content-Type: text/plain’); — устанавливает заголовок HTTP-ответа, указывающий, что содержимое ответа будет отправлено в виде обычного текста.

 

*error_reporting(E_ALL); — устанавливает уровень отчетности об ошибках для текущего скрипта, устанавливая отслеживание всех возможных ошибок.

 

*ini_set(‘display_errors’, 1); — устанавливает, что ошибки будут отображаться на экране в процессе выполнения скрипта, что может помочь быстрее обнаруживать ошибки.

 

*require_once(‘wp-load.php’); — подключает файл wp-load.php, который устанавливает соединение с базой данных WordPress и загружает необходимые библиотеки для работы с WordPress.

 

*ini_set(‘max_execution_time’, 300); — устанавливает максимальное время выполнения скрипта в 300 секунд (5 минут).

 

*function delete_empty_categories() — описывает функцию с названием delete_empty_categories, которая будет удалять пустые категории товаров в вашей базе данных.

 

*$args = array(‘taxonomy’ => ‘product_cat’, ‘hide_empty’ => false); — определяет параметры поиска категорий с помощью функции get_categories. В этом случае будет искаться все категории типа product_cat, включая пустые категории.

 

*$categories = get_categories($args); — получает список всех категорий товаров из базы данных в соответствии с заданными параметрами.

 

*foreach($categories as $category) — запускает цикл, который перебирает все полученные категории товаров.

 

*if ($category->category_count == 0) — проверяет, является ли текущая категория товаров пустой, проверяя количество товаров в этой категории.

 

*wp_delete_term($category->term_id, ‘product_cat’); — удаляет категорию товаров из базы данных с помощью функции wp_delete_term.

 

*if (count($categories) > 0) — проверяет, были ли удалены какие-либо пустые категории товаров из базы данных.

 

*echo «Empty categories have been deleted.»; — выводит на экран сообщение, если пустые категории товаров были удалены.

 

*echo «No empty categories to delete.»; — выводит на экран сообщение, если в базе данных не было пустых категорий товаров, которые могли бы быть удалены.

Последние Новости...

Больше никаких сообщений для показа

КОНТАКТЫ

RuCoder

RuCoder

RuCoder