分类重写规则重定向而不是屏蔽

时间:2011-03-10 作者:cointilt

我有一个自定义的帖子类型items 设置我还建立了一个分类法items 称为类别。

功能。php代码:

    regsiter_post_type(\'items\',
                array(\'labels\' => array
                    (
                        \'name\' => \'Items\',
                        \'singular_name\' => \'Item\'
                    ),
                    \'public\' => true,
                    \'rewrite\' => array
                    ( 
                        \'slug\' => \'items\'
                    ),
                    \'supports\' => array
                    (
                        \'title\',
                        \'excerpt\',
                        \'editor\',
                        \'comments\',
                        \'revisions\',
                        \'thumbnail\'
                    ),
                    \'taxonomies\' => array
                    (
                        \'categories\',
                        \'tags\'
                    )
                ));
   register_taxonomy ( \'categories\', \'items\', array(\'hierarchical\' => true,
                    \'label\' => \'Item Categories\',
                    \'rewrite\' => array
                    (
                        \'slug\' => \'categories\',
                        \'hierarchical\' => ture
                    )));

require \'rewrites.php\'; // load rewrite class
    Rewrites::init(); // call init function in rewrite class
重写。php代码:

class Rewrites
    {
        // Start class methods

        public static function init()
        {
            // Rewrite urls
            add_action ( \'generate_rewrite_rules\', array( __CLASS__, \'rules\' ) );

            add_filter ( \'query_vars\', array( __CLASS__, \'vars\' ) );
        }

        public static function rules ( $wp_rewrite )
        {
            $new_rules = array();
            $new_rules[\'categories/(.+?)/view/(.+)/?\'] = \'index.php?categories=$matches[1]&view=$matches[2]\';

            return $new_rules + $wp_rewrite->rules;
        }

        // End class methods
    }
因此,在分类法中查看帖子时,url应该是:

/类别/%name\\u of\\u分类%/

我还需要附加到url以添加query\\u vars

/类别/%name\\u of\\u taxonomy%/视图/%type\\u of\\u视图%/

%type\\u of\\u view%将是两个不同的选项。列表、网格等。

以下是我的重写规则:

[categories/(.+?)/view/(.+)/?] => index.php?categories=$matches[1]&view=$matches[2]
但当我转到url/categories/%name\\u of\\u taxonomy%/视图/网格/时,它会重定向回/categories/%name\\u of\\u taxonomy%/

1 个回复
最合适的回答,由SO网友:cointilt 整理而成

找到了解决方案。在系统从db读取重写后,这些重写被添加到db中。移动了代码,成功了!

结束

相关推荐

Slug is redirecting to 404

我有一个页面叫做菜谱。我将其更改为Recipes\\u old并更改了slug,以便创建一个新的Recipes页面。当我创建新配方页面时,slug被正确定义为/Recipes/但我无法访问该页面,WordPress正在将所有请求重定向到/Recipes\\u old/如何删除重定向?我已经删除了Recipes\\u old和Recipes。不过,slug仍在重定向。