Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress添加自定义永久链接_Wordpress_Url Rewriting_Permalinks - Fatal编程技术网

Wordpress添加自定义永久链接

Wordpress添加自定义永久链接,wordpress,url-rewriting,permalinks,Wordpress,Url Rewriting,Permalinks,我在wordpress中有一个动态页面设置,它使用$\u GET['id']php变量对数据库进行查询。问题是我的url格式如下所示: 使url看起来像的最佳方法是: 是否使用.htaccess文件中的重写规则完成? 提前谢谢我找到了一个很好的课程,由Kyle教授,请试一试 <?php /* //Author Kyle E Gentile //To use this class you must first include the file. //After including t

我在wordpress中有一个动态页面设置,它使用
$\u GET['id']
php变量对数据库进行查询。问题是我的url格式如下所示:

使url看起来像的最佳方法是:

是否使用.htaccess文件中的重写规则完成?
提前谢谢

我找到了一个很好的课程,由Kyle教授,请试一试

<?php
/*
//Author Kyle E Gentile
//To use this class you must first include the file.  
//After including the file, you need to create an options array.  For example:
$options = array(
    'query_vars' => array('var1', 'var2'),
    'rules' => array('(.+?)/(.+?)/(.+?)/?$' => 'index.php?pagename=$matches[1]&var1=$matches[2]&var2=$matches[3]')
);
//After creating our $option array, 
//we will need to create a new instance of the class as below:
$rewrite = new Add_rewrite_rules($options);
//You must pass the options array, this way. (If you don't there could be problems) 
//Then you can call the filters and action functions as below:
add_action('wp_head', array(&$rewrite, 'flush_rules'));
add_action( 'generate_rewrite_rules', array(&$rewrite, 'add_rewrite_rules') );
add_filter( 'query_vars', array(&$rewrite, 'add_query_vars') );
//That is it.
*/

//prevent duplicate loading of the class if you are using this in multiply plugins
if(!class_exists('add_rewrite_rules')){

    class Add_rewrite_rules{

        var $query_vars;
        var $rules;

        function __construct($options){
            $this->init($options);
        }

        function init($options){
            foreach($options as $key => $value){
                $this->$key = $value;
            }
        }

        function rules_exist(){
            global $wp_rewrite;

            $has_rules = TRUE;

            foreach($this->rules as $key => $value){
                if(!in_array($value, $wp_rewrite->rules)){
                    $has_rules = FALSE;
                }   
            }

            return $has_rules;
        }

        //to be used add_action with the hook 'wp_head'
        //flushing rewrite rules is labor intense so we better test to see if our rules exist first
        //if the rules don't exist flush its like after a night of drinking  
        function flush_rules(){
            global $wp_rewrite;

            if(!$this->rules_exist()){
                //echo "flushed"; // If want to see this in action uncomment this line and remove this text and you will see it flushed before your eyes
                $wp_rewrite->flush_rules();
            }
        }

        //filter function to be used with add_filter() with the hook "query_vars"
        function add_query_vars($query_vars){

            foreach($this->query_vars as $var){
                $query_vars[] = $var;
            }

            return $query_vars;
        }

        //to be used with a the add_action() with the hook "generate_rewrite_rules"
        function add_rewrite_rules(){
            global $wp_rewrite;

            $wp_rewrite->rules = $this->rules + $wp_rewrite->rules;
        }

    }

}
?>
public function rewriteRules()
{
//Add the query variables to the list so wordpress doesn't discard them or worse use them to try and find by itself what page to serve.
    $options = array(
        'query_vars' => array('trainingid', 'vakname'),
        'rules' =>
            array( 'uncategorized/vak/([^/]+)/([^/]+)/?$' => 'index.php?p=1316&vakname=$matches[1]&level=$matches[2]'
            )
    );

    //I use a autoloader but if you don't you have to include the class.
    //include_once('path/to/AddRewriteRules.php');
    $rewrite = new AddRewriteRules($options);
    add_action('wp_head', array(&$rewrite, 'flush_rules'));
    add_action('generate_rewrite_rules', array(&$rewrite, 'add_rewrite_rules'));
    add_filter('query_vars', array(&$rewrite, 'add_query_vars'));


}