Domyślna funkcja wyszukiwania, jeśli formularz wyszukiwania jest pusty, zwraca stronę główną. Chcę, aby zwróciła stronę „przepraszam, że wyszukiwanie nie zwróciło wyników”.
a ten bilet mówi mi, że ma tak działać! Ktoś wymyślił, jak to zmienić, oprócz przekierowania .htaccess?
Korzystam z następującego pliku search.php: `
<div id="content" class="clearfix">
<div id="main" class="col700 left clearfix" role="main">
<h1 class="archive_title"><span>Search Results for:</span> <?php echo esc_attr(get_search_query()); ?></h1>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<article id="post-<?php the_ID(); ?>" <?php post_class('clearfix'); ?>>
<header>
<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
<p class="meta"><?php _e("Posted", "bonestheme"); ?> <time datetime="<?php echo the_time('Y-m-j'); ?>" pubdate><?php the_time('F jS, Y'); ?></time> <?php _e("by", "bonestheme"); ?> <?php the_author_posts_link(); ?> <span class="amp">&</span> <?php _e("filed under", "bonestheme"); ?> <?php the_category(', '); ?>.</p>
</header> <!-- end article header -->
<section class="post_content">
<?php the_excerpt('<span class="read-more">Read more on "'.the_title('', '', false).'" »</span>'); ?>
</section> <!-- end article section -->
<footer>
</footer> <!-- end article footer -->
</article> <!-- end article -->
<?php endwhile; ?>
<?php if (function_exists('page_navi')) { // if expirimental feature is active ?>
<?php page_navi(); // use the page navi function ?>
<?php } else { // if it is disabled, display regular wp prev & next links ?>
<nav class="wp-prev-next">
<ul class="clearfix">
<li class="prev-link"><?php next_posts_link(_e('« Older Entries', "bonestheme")) ?></li>
<li class="next-link"><?php previous_posts_link(_e('Newer Entries »', "bonestheme")) ?></li>
</ul>
</nav>
<?php } ?>
<?php else : ?>
<!-- this area shows up if there are no results -->
<article id="post-not-found">
<header>
<h1>No Results Found</h1>
</header>
<section class="post_content">
<p>Sorry, but the requested resource was not found on this site.</p>
</section>
<footer>
</footer>
</article>
<?php endif; ?>
</div> <!-- end #main -->
<div id="sidebar1" class="sidebar right col220">
<?php get_search_form(); ?>
</div>
</div> <!-- end #content -->
`
Odpowiedzi:
Oto 3 sposoby rozwiązania tego problemu, radzę użyć rozwiązania 2, ale zwróć uwagę na jQuery w rozwiązaniu 1 jako sposób na uniknięcie sytuacji.
Dla tych, którzy chcą więcej kodu opublikowanego z motywu pytającego, nie jest to problem motywu, jest to ogólny problem WordPress, który wpływa na wszystkie witryny WordPress.
Rozwiązanie 1
Szczegółowy samouczek, jak to naprawić, znajdziesz tutaj:
http://wpengineer.com/2162/fix-empty-searches/
Rozwiązanie 2 (zalecane)
Zaczerpnięte z postu Spitzerg http://wordpress.org/support/topic/blank-search-sends-you-to-the-homepage
Rozwiązanie 3
http://www.warpconduit.net/2011/08/02/fix-redirection-and-error-page-on-empty-wordpress-search/
Podobne do rozwiązania 2, ale nie tak rozbudowane i nieco inne.
źródło
Utwórz stronę Search.php i wklej ten kod i zmień swoją pętlę za pomocą „get_template_part („ loop ”,„ search ”);
źródło
Opierając się na rozwiązaniu Toma 2, ale upewniając się, że żadne posty nie są zwracane, dodaj filtr żądań jak poprzednio:
Ale tym razem ustaw zmienną globalną, aby powiedzieć, że nie należy zwracać wyników wyszukiwania. Następnie za pomocą haka posts_where upewnij się, że nie są zwracane żadne posty:
źródło
Sprawdź, czy wyszukiwane zapytanie jest puste ( get_search_query () ), po prostu zastąp pierwszy JEŻELI:
źródło
Obsługuję to w moich motywach w następujący sposób. Spróbuj użyć tego kodu:
Obsługujemy warunek if (! Have_posts ()). Umieść go zaraz po tytule h3.archive, zanim rozpocznie się if (have_posts). Możesz nawet wywołać funkcję formularza wyszukiwania w obszarze zawartości.
źródło
Napotkałem również ten sam problem, domyślnie podany przez wordpress.
ale na szczęście znalazłem coś, co mi pomogło.
Dodaj poniżej w „Functions.php”
a następnie zamień poniżej linii (linia nr 15) w search.php
Może ci to też pomoże
Aby uzyskać szczegółowe informacje, przeczytaj: Dostosuj puste wyszukiwane słowo
źródło
Jednym ze sposobów uniknięcia pustego wyszukiwania jest sprawdzenie javascript pod kątem pustej wartości pola wyszukiwania, a jeśli znalezione pole jest puste, przestań przesyłać formularz wyszukiwania, jak poniżej:
źródło
źródło