更改搜索结果目标URL

时间:2015-07-02 作者:Nathan Hornby

对不起,我的基本问题是,我尝试的每个谷歌查询都不会产生有用的结果。

如何更改Wordpress中的搜索结果目录?当前所有搜索都需要在root 产生结果。i、 e。

www.domain.tld/?s=query

但我希望能够进行两次搜索(目前我已经独立进行了):

  • www.domain.tld/blog/?s=query
  • www.domain.tld/somethingelse/?s=query
我已经尝试将目录添加到我的搜索表单中actions、 虽然我已经让Wordpress为每个搜索加载了正确的模板,但搜索永远不会产生任何结果。它们仅在搜索root.

回到这里,我可以在搜索表单操作中包含目录。奇怪的是,我对此进行了相当长的实验,但却一无所获。所以我认为,出于某种原因,可能还有其他原因阻止了这一点。令人讨厌的神秘!

2 个回复
SO网友:Isu

您可以创建新页面。假设您想要:http://example.com/mysearch/

创建一个具有该URL结构的页面。接下来,搜索表单->转到并执行搜索表单操作:

<form role="filter-search" method="get" id="sd_searchform_filter" action="<?php 
    echo home_url( \'/mysearch/\' ); ?>">...
现在转到functions.php (或者你想在哪里使用这个函数)现在我们在玩把戏!

function isu_search_url( $query ) {

    $page_id = 12; // This is ID of page with your structure -> http://example.com/mysearch/
    $per_page = 10;
    $post_type = \'activity\'; // I just modify a bit this querry

    // Now we must edit only query on this one page
    if ( !is_admin() && $query->is_main_query() && $query->queried_object->ID == $page_id  ) {
        // I like to have additional class if it is special Query like for activity as you can see
        add_filter( \'body_class\', function( $classes ) {
            $classes[] = \'filter-search\';
            return $classes;
        } );
        $query->set( \'pagename\', \'\' ); // we reset this one to empty!
            $query->set( \'posts_per_page\', $per_page ); // set post per page or dont ... :)
            $query->set( \'post_type\', $post_type ); // we set post type if we need (I need in this case)
            // 3 important steps (make sure to do it, and you not on archive page, 
            // or just fails if it is archive, use e.g. Query monitor plugin )
            $query->is_search = true; // We making WP think it is Search page 
            $query->is_page = false; // disable unnecessary WP condition
            $query->is_singular = false; // disable unnecessary WP condition
        }
}
add_action( \'pre_get_posts\', \'isu_search_url\' );
现在成功了,你不需要改变.htaccess, 等。分页将正常工作。:)

SO网友:Amirmasoud

您可以使用函数来实现这一点。php文件:

function fb_change_search_url_rewrite() {
    if ( is_search() && ! empty( $_GET[\'s\'] ) ) {
        wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( \'s\' ) ) );
        exit();
    }   
}
add_action( \'template_redirect\', \'fb_change_search_url_rewrite\' );
也可以通过htacces规则:

# search redirect
# this will take anything in the query string, minus any extraneous values, and turn them into a clean working url
RewriteCond %{QUERY_STRING} \\\\?s=([^&]+) [NC]
RewriteRule ^$ /search/%1/? [NC,R,L]

source

结束

相关推荐

Where is search.php?

我在Wordpress 4.0.1上有一个网站,但我找不到搜索。php。数据库批处理过程已将模板应用于默认搜索结果页面,但我现在找不到该页面以将其更改回原来的页面。如何更改此页面的模板?在我的主题中创建一个新的“search.php”会有帮助吗?如果是,此文件应包含哪些内容?