Игорь Воротнёв: если перейти в машинный код, то получение значения из переменной менее трудозатратно по количеству команд, чем из функции, если даже она возвращает статику. Вообще считаю что если вызывается много раз одна и та же функция в коде и она возвращает одно и то же значение, то оптимальнее один раз вызов функции сохранить в переменной. Переменные для этого и нужны. Но это правило распространяется только на 1 файл или на 1 метод, функцию в зависимости от количества и сложности кода - что бы не искать где эта переменная получает значение.
Игорь Воротнёв: Разумные замечания. Буду их придерживаться. Использование переменной $path просто делает для меня код более читабельным и проще управлять из одного места. wp_create_nonce('myajax-nonce') просто как пример использован, что можно создавать.
Nikitos08: Это сделать не сложно, но требует знания php как минимум. Смысл в том что бы изменить шаблон archive-product.php. Нужно изменить в этом шаблоне цикл и отключить wc_get_template_part(). Нужно в цикле while не выводить контент, а формировать ассоциативный массив. Грубо говоря у нас есть список всех товаров(записей). В цикле мы проходим по всем товарам. У каждого товара мы получаем метку. И записывай в массив, где ключ ячейки это как раз метка товара. В итоге массив будет иметь примерный вид array('metka_tovara1' => array('массив товаров'), 'metka_tovara2' => array('массив товаров2'), 'metka_tovara3' => array('массив товаров3')). В массиве товаров хранятся товары. Для каждого товара имеется список необходимых полей для вывода - ссылка, изображение, заголовок, описание, цен и т.д.. После этого выводим с помощью этого массива поблочно(пометочно) товары
Такой способ не повлияет на стандартную работу woocommerce и на фильтр. Возможно написано сложно, но подробнее - это написать код.