Я работаю в магазине woocommerce, в котором я должен показывать товары на заказной стоимости.Продукт принадлежит любому месту.Я завершил работу над плагином почти на 50%, продукты на странице магазина отлично фильтруются, но некоторые продукты, товары для продажи, последние продукты и т. Д. Не получают фильтра, потому что они генерируются из шорткодов продуктов woocommerce.
До сих пор я добавил пользовательский файл на странице продукта администратора и показал фильтр продуктов на веб-интерфейсе на странице магазина.Теперь я хочу отфильтровать продукты по шорткоду.
Я добавил пользовательский файл на странице информации о продукте на сайте администратора ниже:
/* adding custom product field: location */
function add_custom_product_text_filed(){
global $woocommerce, $post;
$locatons = array('all' => 'All');
$locations_posts = get_posts(array('post_type' => 'location', 'numberposts' => -1));
foreach ($locations_posts as $loc_post) {
$locatons[$loc_post->ID] = $loc_post->post_title;
}
echo '<div class="options_group">';
woocommerce_wp_select(
array(
'id' => '_location',
'label' => __('Location'),
'desc_tip' => true,
'description' => __('Enter the product location here'),
'options' => $locatons,
)
);
echo '</div>';
}
А ниже приведен код показа продуктов на основена месте
/*Get Location Based Products*/
add_action( 'woocommerce_product_query', 'location_products' );
function location_products($q){
if (isset($_COOKIE['wc_location_product_id']) && !empty($_COOKIE['wc_location_product_id']) && !is_null($_COOKIE['wc_location_product_id']) && $_COOKIE['wc_location_product_id'] != 'all') {
$meta_query = $q->get('meta_query');
$meta_query[] = array(
'key' => '_location',
'value' => $_COOKIE['wc_location_product_id'],
'compare' => '=',
);
$q->set('meta_query', $meta_query);
}
}
Теперь я хочу изменить рабочий шорткод продуктов woocommerce (товары для продажи, продукты с характеристиками, последние продукты и т. д.) в соответствии с пользовательским полем местоположения, поскольку на странице используется шорткод для отображения продуктов, но я нене понимаю, как я могу изменить способ функциональности шорткода.Есть ли какой-либо хук или фильтр для выполнения этой задачи, или любой пример, который дает представление о том, как это сделать.Ваша помощь приветствуется.Спасибо.