У меня проблема с моим собственным кодом. Его главная цель - отфильтровать товары моего магазина woocommerce. Так вот как это выглядит:
function flt_product_search_func() {
?>
<form role="search" method="get" class="woocommerce-product-search" name="b2bform" id="b2bform" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<div class="container">
<div class="row">
<div class="col-lg-3">
<p class="search-field-name">Nazwa</p>
<input type="search" id="woocommerce-product-search-field-1" class="search-field" value="<?php echo get_search_query(); ?>" name="s" />
</div>
<div class="col-lg-3">
<p class="search-field-name">Marka</p>
<?php
$pabase = "pa_marka";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="<?php echo $pabase; ?>">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="col-lg-3">
<p class="search-field-name">Typ</p>
<?php
$pabase = "pa_typ-wozka";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="<?php echo $pabase; ?>">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="col-lg-3">
<p class="search-field-name">Udźwig od</p>
<?php
$pabase = "pa_udzwig";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="rng_min_pa_udzwig">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
</div>
<div class="row">
<div class="col-lg-3">
<p class="search-field-name">Udźwig do</p>
<?php
$pabase = "pa_udzwig";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="rng_max_pa_udzwig">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="col-lg-3">
<p class="search-field-name">Napęd</p>
<?php
$pabase = "pa_naped";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="<?php echo $pabase; ?>">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="col-lg-3">
<p class="search-field-name">Podnoszenie od</p>
<?php
$pabase = "pa_podnoszenie";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="rng_min_pa_podnoszenie">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="col-lg-3">
<p class="search-field-name">Podnoszenie do</p>
<?php
$pabase = "pa_podnoszenie";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="rng_max_pa_podnoszenie">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
</div>
<div class="row">
<div class="col-lg-3">
<p class="search-field-name">Rok produkcji od</p>
<?php
$pabase = "pa_rok-produkcji";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="rng_min_pa_rok-produkcji">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="col-lg-3">
<p class="search-field-name">Rok produkcji do</p>
<?php
$pabase = "pa_rok-produkcji";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="rng_max_pa_rok-produkcji">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="col-lg-3">
<p class="search-field-name">Cena od</p>
<?php
$pabase = "rng_min_price";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?>
<input type="text" id="<?php echo $pabase; ?>" class="<?php echo $pabase; ?>" value="" name="<?php echo $pabase; ?>" />
</div>
<div class="col-lg-3">
<p class="search-field-name">Cena do</p>
<?php
$pabase = "rng_max_price";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?>
<input type="text" id="<?php echo $pabase; ?>" class="<?php echo $pabase; ?>" value="" name="<?php echo $pabase; ?>" />
</div>
</div>
<div class="row">
<div class="col-lg-3">
<p class="search-field-name">Maszt</p>
<?php
$pabase = "pa_maszt";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="<?php echo $pabase; ?>">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="col-lg-3">
<p class="search-field-name">Motogodziny od</p>
<?php
$pabase = "pa_motogodziny";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="rng_min_pa_motogodziny">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="col-lg-3">
<p class="search-field-name">Motogodziny do</p>
<?php
$pabase = "pa_motogodziny";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="rng_max_pa_motogodziny">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="col-lg-3">
<p class="search-field-name">Kabina</p>
<?php
$pabase = "pa_kabina";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="<?php echo $pabase; ?>">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
</div>
<div class="row">
<div class="col-lg-3">
<p class="search-field-name">Przebieg od</p>
<?php
$pabase = "pa_przebieg";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="rng_min_pa_przebieg">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="col-lg-3">
<p class="search-field-name">Przebieg do</p>
<?php
$pabase = "pa_przebieg";
$subheadingvalues = get_terms($pabase, array(
'hide_empty' => false,
));
?> <select name="rng_max_pa_przebieg">
<option label=" " selected disabled value></option>
<?php foreach ($subheadingvalues as $subheadingvalue): ?>
<option value="<?php echo $subheadingvalue->name; ?>">
<?php echo $subheadingvalue->name; ?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="col-lg-3"></div>
<div class="col-lg-3"></div>
</div>
<div class="row">
<div class="col-lg-12">
<button type="submit" value="<?php echo esc_attr_x( 'Search', 'submit button', 'woocommerce' ); ?>" class="takeright btnorange"><i class="fas fa-search"></i> <?php echo esc_html_x( 'Search', 'submit button', 'woocommerce' ); ?></button>
<button type="reset" value="<?php echo esc_attr_x( 'Wyczyść', 'reset button', 'woocommerce' ); ?>" id="resetbtn" class="takeright marginright1em btnorange" onClick="this.form.reset()"><?php echo esc_html_x( 'Wyczyść', 'reset button', 'woocommerce' ); ?></button>
<input type="hidden" name="post_type" value="product" />
</div>
</div>
</div>
</form>
<?php
}
add_shortcode( 'flt_product_search', 'flt_product_search_func' );
Я почти уверен, что код можно оптимизировать, но все же, он окейский. Я использую этот шорткод на своей домашней странице, и когда кто-то отправляет запрос, он отображает правильные результаты (то есть список продуктов). Но я подошел к двум вопросам:
- что если я хотел бы показать ту же самую форму (используя тот же шорткод) на странице woocomerce (список товаров)? Это просто не работает. По не работает, не ищет товары
- что если я хотел бы передать выбранные значения (в раскрывающихся списках) с домашней страницы на страницу поиска (список продуктов woocommerce)? Я понятия не имею, как этого достичь
возможно, я смогу использовать if (isset ($ _GET ['submit'])) {?
спасибо за любые предложения