Artur C.

Artur C. .unknown

Temat: Wyszukiwarka

Witam,

Mam szukajkę a w niej dwie opcje typu select.

W select pierwszym ustawiłem sobie przedziały szukania wg ceny. Natomiast w select 2 co ma być szukane.

Problem polega na tym, że kiedy klikam szukaj wyszukuje mi tylko z select 2 i w ogóle nie uwzględnia tego co zaznaczyłem w select 1. Jakiś pomysł gdzie jest błąd?


<form method="get" action="<?php bloginfo('url'); ?>" class="clearfix">
<div class="select">
<select class="option-listing" name="option-listing">
<?php foreach ($listings1 as $item) { ?>
<option value="<?php echo $item; ?>"><?php echo get_cat_name($item); ?></option>
<?php } ?>
</select>
</div> <!-- end .select1 -->



<div class="select">
<select class="option-listing" name="option-listing">
<?php foreach ($listings2 as $item) { ?>
<option value="<?php echo $item; ?>"><?php echo get_cat_name($item); ?></option>
<?php } ?>
</select>
</div> <!-- end .select2 -->

<input class="view-button" type="submit" value="view" name="submit" />
</form>

konto usunięte

Temat: Wyszukiwarka

oba selekty maja taki sam atrybut "name",
więc drugi nadpisuje Ci pierwszy
Artur C.

Artur C. .unknown

Temat: Wyszukiwarka

Faktycznie :) teraz działa elegancko! dzięki po raz n'ty !

EDIT:

Jednak nie do końca.. zmieniłem name na:


<form method="get" action="<?php bloginfo('url'); ?>" class="clearfix">
<div class="select">
<select class="option-listing" name="option-listing">
<?php foreach ($listings1 as $item) { ?>
<option value="<?php echo $item; ?>"><?php echo get_cat_name($item); ?></option>
<?php } ?>
</select>
</div> <!-- end .select --> <div class="select">
<select class="option-listing" name="option-listing1">
<?php foreach ($listings2 as $item) { ?>
<option value="<?php echo $item; ?>"><?php echo get_cat_name($item); ?></option>
<?php } ?>
</select>
</div> <!-- end .select -->
<div class="select">
<select class="option-listing" name="option-listing2">
<?php foreach ($listings3 as $item) { ?>
<option value="<?php echo $item; ?>"><?php echo get_cat_name($item); ?></option>
<?php } ?>
</select>
</div> <!-- end .select -->


i znalazłem wpliku functions.php coś takiego:


add_action('template_redirect','check_listing');
function check_listing() {
if (isset($_REQUEST["option-listing"])) {
$category_link = get_category_link( $_REQUEST["option-listing"] );
wp_redirect($category_link);
}
if (isset($_REQUEST["option-listing1"])) {
$category_link = get_category_link( $_REQUEST["option-listing1"] );
wp_redirect($category_link);
}
if (isset($_REQUEST["option-listing2"])) {
$category_link = get_category_link( $_REQUEST["option-listing2"] );
wp_redirect($category_link);
}


dopisałem 2 kolejne if'y analogicznie do tych pierwszych i generalnie wyszukiwarka działa tak, że nie dokładnie precyzuje swoje poszukiwania..

np. mam taką bazę:

-> option-listing:
-->1-dom
-->2-mieszkanie

->option-listing2:
-->1-kupie
-->2-sprzedam

->option-listing3:
-->1-do 1000zł
-->2-od 1001zł

I jak zaznacze sobie: DOM -> KUPIE -> DO 1000zł

to wyszukiwarka zwróci mi wynik MIESZKANIE -> SPRZEDAM -> DO 1000zł

działa tak jakby w wynikach podawało te, które chociaż zawierają jedną rzecz z selecta..

Nie mam zielonego pojęcia jak to naprawić... może te ify jakoś inaczej zapisać?Artur P. edytował(a) ten post dnia 02.07.12 o godzinie 13:49

konto usunięte

Temat: Wyszukiwarka

[edit]

Dobra już widzę,
teraz wyszukiwarka działa tak, że jeżeli
zmienna $_REQUEST["option-listing"] ma jakąś wartość to szukasz linka do kategorii i przekierowujesz użytkownika do niej

czyli np jeżeli $_REQUEST["option-listing"] ma wartość 1 to powinno przekierować użytkownika do kategorii o id = 1 i tam wyświetlić wszystkie posty jakie do niej należą

[edit 2]

żeby to Ci zadziałało to skorzystaj z wp_Query i ręcznie zbuduj zapytanie do bazy dodając kolejne warunki. Również lepiej by było gdybyś zamienił kategorie po jakich szukasz na custom fieldsCezary H. edytował(a) ten post dnia 02.07.12 o godzinie 14:51

Następna dyskusja:

Wyszukiwarka komentarzy - m...




Wyślij zaproszenie do