Bu fonksiyon yapılan arama sorgusunda eğer sonuç olarak 1 post varsa otomatik olarak o post adresine yönlendirme yapar. Mantık olarak sadece 1 sonucun gösterileceği arama sonucu sayfası zaten kullanışlı değil, ziyaretçinin otomatik olarak çıkan tek sonuca yönlendirilmesi iyi fikir.
Fonksiyonu temanızın functions.php dosyası içerisine yazarsanız çalışır.
add_action('template_redirect', 'one_match_redirect');
function one_match_redirect() {
if (is_search()) {
global $wp_query;
if ($wp_query->post_count == 1) {
wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
}
}
}
Diğer başka bir fonksiyonda arama terimini yazı veya sayfaların başlıklarındaki kelimelerle eşleşirse o yazıya yönlendiriyor.
add_action('template_redirect', 'ara_match_redirect');
function ara_match_redirect() {
if ( is_search() && strpos($_SERVER['REQUEST_URI'], '/wp-admin/') === false && strpos($_SERVER['REQUEST_URI'], '/search/') === false ) {
global $wp_query;
if ( get_page_by_title( get_search_query(), 'OBJECT', 'post' ) ) {
wp_redirect( get_permalink( get_page_by_title (get_search_query() )->ID ) );
}
elseif ( get_page_by_title( get_search_query(), 'OBJECT', 'page' ) ) {
wp_redirect( get_permalink( get_page_by_title( get_search_query() )->ID ) );
} else {
wp_redirect(get_bloginfo('home') . '/search/' . artiaralink(get_query_var('s')));
}
exit();
}
}
Afiyet olsun.
