Questo è un’altro degli snippets che uso normalmente sui template WordPress che mi chiedono di sviluppare.
Il primo pezzo (template_redirect) si occupa semplicemente di modificare il permalink base delle ricerca da “http://www.nomesito.com/?s=query” a “http://www.nomesito.com/search/query/“.
Con il secondo gestisco il caso in cui NON voglio che la keyword usata per la ricerca sia “search“.
Vado quidi a modificare la “search_base” ed a creare la regola di rewrite.
Ovviamente è necessario rigenerare i permalink in modo che la regola venga gestita correttamente.
/**
* Redirects search results from /?s=query to /search/query/, converts %20 to +
*
* @link https://wordpress.org/plugins/nice-search/
*
*/
add_action( 'template_redirect', function () {
global $wp_rewrite;
if ( !isset( $wp_rewrite ) || !is_object( $wp_rewrite ) || !$wp_rewrite->using_permalinks() )
return;
$search_base = $wp_rewrite->search_base;
if ( is_search() && !is_admin() && strpos( $_SERVER['REQUEST_URI'], "/{$search_base}/" ) === false ) {
wp_redirect( home_url( "/{$search_base}/" . urlencode( get_query_var( 's' ) ) ) );
exit();
}
});
/**
* Changhe the search_base add rewrite_rule
* Only if != search
*/
add_action( 'init', function () {
$GLOBALS['wp_rewrite']->search_base = 'search-results';
add_rewrite_rule('^' . $GLOBALS['wp_rewrite']->search_base . '/([^/]+)/?$', 'index.php?s=$matches[1]', "top");
});Mark Jaquith aveva scritto anche un plugin ma oltre al fatto che non gestiva la modifica della “search_base” preferisco gestirlo via codice includendolo dimanicamente dentro functions.php




Nessun commento
Scrivi il primo.
Scrivi un commento