三十、Wordpress的自定义伪静态规则

admin2023-01-181350

Wordpress的伪静态规则存放在wp_options数据表的rewrite_rules的对应值里。

试图将www.xxx.com/url?v=123伪静态成www.xxx.com/url-123.html

functions.php

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

    // 如果伪静态规则里面没有我们的规则,则进行重置
    function my_flush_rules(){
        $rules = get_option( 'rewrite_rules' );
        
        if ( ! isset( $rules['url-(.*).html$'] ) ) {
            global $wp_rewrite;
            $wp_rewrite->flush_rules();
        }
    }

    //添加一个新的伪静态规则
    function my_insert_rewrite_rules( $rules )
    {
        $newrules = array();
        $newrules['url-(.*).html$'] = 'index.php?pagename=url&v=$matches[1]';
        return $newrules + $rules;
    }
    
    //添加一个变量名称
    function my_insert_query_vars( $vars )
    {
        array_push( $vars, 'v' );
        return $vars;
    }


网友评论