板邓:wordpress自定义伪静态 WP_Rewrite

阅读wordpress官方文档WP_Rewrite类:https://codex.wordpress.org/Class_Reference/WP_Rewrite

 

案例:

add_filter( 'rewrite_rules_array','my_insert_rewrite_rules' );
add_filter( 'query_vars','my_insert_query_vars' );
add_action( 'wp_loaded','my_flush_rules' );

// flush_rules() if our rules are not yet included
function my_flush_rules(){
    $rules = get_option( 'rewrite_rules' );

    if ( ! isset( $rules['(project)/(\d*)$'] ) ) {
        global $wp_rewrite;
           $wp_rewrite->flush_rules();
    }
}

// Adding a new rule
function my_insert_rewrite_rules( $rules )
{
    $newrules = array();
    $newrules['(project)/(\d*)$'] = 'index.php?pagename=$matches[1]&id=$matches[2]';
    return $newrules + $rules;
}

// Adding the id var so that WP recognizes it
function my_insert_query_vars( $vars )
{
    array_push($vars, 'id');
    return $vars;
}

The Jerome's Keywords plugin does this to enable URLs like http://example.com/tag/sausages.

function keywords_create_rewrite_rules( $rewrite ) {
    global $wp_rewrite;
    
    // add rewrite tokens
    $keytag_token = '%tag%';
    $wp_rewrite->add_rewrite_tag( $keytag_token, '(.+)', 'tag=' );
    
    $keywords_structure = $wp_rewrite->root . "tag/$keytag_token";
    $keywords_rewrite = $wp_rewrite->generate_rewrite_rules( $keywords_structure );
    
    return ( $rewrite + $keywords_rewrite );
}

 




A simpler example of this is Ryan Boren's Feed Director plugin. This simply redirects URLs likehttp://example.com/feed.xml to http://example.com/feed/rss2:

function feed_dir_rewrite( $wp_rewrite ) {
    $feed_rules = array(
        'index.rdf' => 'index.php?feed=rdf',
        'index.xml' => 'index.php?feed=rss2',
        '(.+).xml' => 'index.php?feed=' . $wp_rewrite->preg_index(1)
    );

    $wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
    return $wp_rewrite->rules;
}

// Hook in.
add_filter( 'generate_rewrite_rules', 'feed_dir_rewrite' );

 

转载于:https://www.cnblogs.com/xbdeng/p/6119991.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值