WordPress自定义URL重写重定向而不是屏蔽

时间:2011-08-29 作者:Lachlan McD.

我有一个插件中的以下代码,该插件旨在将请求发送到url/stores/directory/foorbar/ 并通过foobar 作为GET变量:

function pcrr_rewrite_rules($a) {
    $k = array(\'stores/directory/([^/]+)/?$\' => \'index.php?pagename=directory&pod_store_id=$matches[1]\');
    return $k + $a;
}
add_filter(\'rewrite_rules_array\', \'pcrr_rewrite_rules\');

# Flush existing rules and rewrite
function pcrr_activate() {
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}
register_activation_hook(__FILE__, \'pcrr_activate\');
预期的行为是/stores/directory/foobar/ 将改为加载index.php?..., 然而,在处理请求时,它们会重定向到URL,而不是屏蔽它。例如,请求/stores/directory/foobar/ 被重定向到/stores/directory/.

有什么办法可以纠正这种行为吗?

干杯

1 个回复
SO网友:kaiser

Quick\'n\'dirty类执行以下操作(您需要手动刷新永久链接的管理设置):

<?php
/**
 * Add query args & vars & redirect stuff somewhere else
 * Could be extended to support arrays of query args on input
 * @package Rewrite Class
 * @author F.J.Kaiser
 */
class wpseAddRewriteRules
{
    var $file_name;
    var $query_arg;
    var $query_var;

    function __construct( file_name, query_arg, query_var )
    {
        $this->file_name    = $file_name;
        $this->query_arg    = $query_arg;
        $this->query_var    = $query_var;

        add_action( \'wp_loaded\', array( &$this, \'add_rewrite_rule\') );
        add_filter( \'query_vars\', array( &$this, \'add_query_vars\') );
        add_action( \'parse_request\', array( &$this, \'parse_request\') );
    }


    function add_rewrite_rule()
    {
        add_rewrite_rule( 
             "{$this->file_name}.php$"
            ,"index.php?{$this->query_arg}={$this->query_var}"
            ,\'top\' 
        );
    }


    function add_query_vars( $query_vars )
    {
        $query_vars[] = $this->query_arg;
        return $query_vars;
    }


    function parse_request( &$wp )
    {
        if ( array_key_exists( $this->query_arg, $wp->query_vars ) ) {
            include plugin_dir_path( __FILE__ )."{$this->file_name}.php";
            exit();
        }
        return;
    }
}
注意:我只是把大脑的背面写了下来,所以对任何事情都不提防。输入错误(&A);这些可能隐藏在那里

结束

相关推荐

Switching Code plugins

我目前正在使用“Wordpress代码片段”为插入到帖子中的代码添加功能。这个插件的工作方式是将代码添加到设置中的插件库中,然后执行类似于[代码:1]的操作(我记不清确切的语法了)我真的不太喜欢它的风格,所以我希望使用谷歌的美化。停用此插件会有什么影响?我会丢失所有的代码片段吗?我是否需要浏览每一篇文章并编辑所有的代码片段(即[代码:1])?