[wp-hackers] any idea why this custom rewrite isnt working?

Dion Hulse (dd32) wordpress at dd32.id.au
Thu May 17 00:47:37 UTC 2012


Short answer is:

// multiple tag doesnt work domain.com/tag/tag-tag2.html
 from: loop-tag.php

Doesn't work because /tag/tag-tag2.html doesn't resolve any posts, and
therefor, the 404 handler/templates are used.

Don't use new WP_Query like that, use pre_get_posts or parse_request
and filter the values there instead, that will allow your mail
WP_Query to contain the correct data and not load the 404 handler
unless the initial query doesn't match any posts.

On 17 May 2012 02:45, Chris McCoy <chris at lod.com> wrote:
> // multiple keywords works fine domain.com/search/keyword-keyword2.html
>
> from : loop-search.php
>
> $search_query = str_replace('-',' ', $wp_query->query_vars['s']);
> $mysearch = new WP_Query("s=$search_query&showposts=-1");
>
> // multiple tag doesnt work domain.com/tag/tag-tag2.html
>
> from: loop-tag.php
>
> $tag_query = str_replace('-',',',$wp_query->query_vars['tag']);
> $mytag = new WP_Query("tag=$tag_query&showposts=-1");
>
> // rewrites
>
> add_action('generate_rewrite_rules', 'hotlinkers_add_rewrite_rules');
>
> function hotlinkers_add_rewrite_rules( $wp_rewrite ) {
>    $new_rules = array(
>    "^search/(.+)\.html$" => 'index.php?s=' . $wp_rewrite->preg_index(1),
>    "^tag/(.+)\.html$" => 'index.php?tag=' . $wp_rewrite->preg_index(1)
>    );
>    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
> }
>
> add_filter('query_vars', 'hotlinkers_queryvars' );
>
> function hotlinkers_queryvars( $qvars ){
>    $qvars[] = 's';
>    $qvars[] = 'tag';
>    return $qvars;
> }
>
> add_action('init','hotlinkers_flush_rules');
>
> function hotlinkers_flush_rules(){
>    global $wp_rewrite;
>    $wp_rewrite->flush_rules();
> }
>
> Thanks ;)
>
>
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers


More information about the wp-hackers mailing list