如何使用URL中的信息将404页面转换为自动搜索?

时间:2015-10-01 作者:rothschild86

所有404实现似乎都围绕显示相关内容展开。我想我们可以通过自动搜索丢失的帖子来做得更好。。。如何做到这一点?

2 个回复
最合适的回答,由SO网友:rothschild86 整理而成

这可以通过两个简单的步骤完成。

使用诸如Relevanssi(可选)之类的插件升级站点搜索。

在函数中添加以下代码。php或通过代码片段(thx发送给@Howdy\\u McGee和RussellJamieson以获取创意!)

function wpse_204310() {

    global $wp_query;

    if( is_404()
        && !is_robots() 
        && !is_feed() 
        && !is_trackback()
      ) {
        $uri    = $_SERVER[\'REQUEST_URI\'];
        $clean  = str_replace( "/", "%20", $uri );
        $clean2 = str_replace( "-", "%20", $clean ); 
        wp_redirect( home_url( "/?s={$clean2}" ) );
        exit();
    }
}

add_action( \'template_redirect\', \'wpse_204310\' );
就是这样。这段代码将解析博客标题的url,并将其传递到您的搜索页面。对用户完全透明。这假设了一个简单的permalink结构,例如domain。com/post标题

SO网友:Howdy_McGee

你可以在404上找到他们要找的页面名并使用template_redirect 要将该页面名放入默认搜索,请执行以下操作:

function wpse_204310() {
    global $wp_query;

    if( is_404() ) {
        $slug = $wp_query->get( \'pagename\' );
        wp_redirect( home_url( "/?s={$slug}" ) );
        exit();
    }
}
add_action( \'template_redirect\', \'wpse_204310\' );
默认的WordPress搜索并不是最好的,我不确定上面的代码片段将如何与尝试改进默认搜索的插件交互,但这是一种可能的解决方案。

相关推荐