简体   繁体   中英

Wordpress rewrite url with query parameters

I have post with categories based one year, month and date

Categories

2013
    May 14
    APRIL 10
2012
    JUNE 6

I am creating the rewrite urls to particular date categories
by creating the url like category/slug-name/issues/year/month/date

My rewrite url is below

add_action('generate_rewrite_rules', 'past_issue_rewrite_rules');
function past_issue_rewrite_rules( $wp_rewrite ) {
    $wp_rewrite->rules = array_merge( array('category/past-issues/issues/(.+)/(.+)/
    (.+)/' => 'category/past-issues/?year='.$wp_rewrite->preg_index(1).'&month='.
    $wp_rewrite->preg_index(2).'&day='.$wp_rewrite->preg_index(3)), 
    $wp_rewrite->rules );
}

add_filter( 'query_vars', 'setup_filter_query_vars' );  

function setup_filter_query_vars( $query_vars )
{
    $query_vars[] = 'year';
    $query_vars[] = 'month';
    $query_vars[] = 'day';
    return $query_vars;
}

when I tried to access the page it is showing page not found. what is the error? Is it possible to send the parameters to category.php page

I am not sure. Please let me know if this is wrong.

I found the s0lution by myself and here is the code

 function past_issue_rewrite_rules(){

    add_rewrite_rule(
        'category/past-issues/(\d+)/(\d+)/(\d+)/?$',
        'index.php?category_name=past-issues&pyear=$matches[1]&pmonth=$matches[2]&pday=$matches[3]',
        'top'
    );
}
add_action( 'init', 'past_issue_rewrite_rules' );
add_filter( 'query_vars', 'setup_filter_query_vars' );
function setup_filter_query_vars( $query_vars )
{
    $query_vars[] = 'pyear';
    $query_vars[] = 'pmonth';
    $query_vars[] = 'pday';
    return $query_vars;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM