首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wordpress - wp_rewrite规则

Wordpress - wp_rewrite规则
EN

Stack Overflow用户
提问于 2012-10-30 13:34:38
回答 1查看 8.9K关注 0票数 12

我正试图为WordPress编写一个插件,但在wp_rewrite功能方面我遇到了一些问题。

我希望通过URL传递变量(例如: www.mysite.com/WordPress?variable=helloall),使一个页面显示为它的多个页面。

但是,我希望保持permalink结构的完整,因此我希望URL以如下方式出现:

www.mysite.com/WordPress/helloall

然后,我想要能够得到的子弹和使用搜索我的数据库。(就像我使用前面提到的通用方法时使用的$_GET一样)

我已经在网上找到了一些教程,而且到目前为止还能做到这一点。我相信我的问题是因为你对规则的正确写法缺乏理解。

我使用过本教程:

http://www.prodeveloper.org/create-your-own-rewrite-rules-in-wordpress.html

我大部分时间都尝试使用相同的代码。我能制定规则,但他们似乎不想为我工作

有人能告诉我正确的格式才能做到这一点吗?

编辑

这是我目前的职能

代码语言:javascript
复制
function add_rewrite_rules( $wp_rewrite ) 
{
    $new_rules = array
    (
        '(.?.+?)/(.+?)/page/?([0-9]{1,})/?$' => 'index.php?pagename='.
        $wp_rewrite->preg_index(1).'&varname='.
        $wp_rewrite->preg_index(2).'&page='.
        $wp_rewrite->preg_index(3),

        '(.?.+?)/(.*?)/?$' => 'index.php?pagename='.
        $wp_rewrite->preg_index(1).'&varname='.
        $wp_rewrite->preg_index(2)
    );
    // Always add your rules to the top, to make sure your rules have priority
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

Add_action(“生成_重写规则”,“add_rewrite_rules”);

解决方案

我已经想好了,我本来打算把这个作为一个答案,但是现在我似乎无法回答我自己的问题,所以我正在编辑原来的帖子:

首先,我上面发布的代码是正确的,但是它不起作用的原因是因为我没有刷新规则,我这样做是用以下代码:

代码语言:javascript
复制
function ebi_flush_rewrite_rules()
{
global $wp_rewrite;

$wp_rewrite->flush_rules();
}

add_action( 'init', 'flush_rewrite_rules');

我的新问题是,我的代码工作得有点好,重定向所有页面而不是我想要的页面,这意味着没有任何子页面会显示这是一个问题,然而,我已经用一个小编辑解决了这个问题:

代码语言:javascript
复制
function add_rewrite_rules( $wp_rewrite ) 
{
  $new_rules = array
  (
    '(testpage)/(.+?)/page/?([0-9]{1,})/?$' => 'index.php?pagename='.
    $wp_rewrite->preg_index(1).'&varname='.
    $wp_rewrite->preg_index(2).'&page='.
    $wp_rewrite->preg_index(3),

    '(testpage)/(.*?)/?$' => 'index.php?pagename='.
    $wp_rewrite->preg_index(1).'&varname='.
    $wp_rewrite->preg_index(2)
  );
  // Always add your rules to the top, to make sure your rules have priority
  $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

因此,关于wp_rewrite功能的最后代码如下:

代码语言:javascript
复制
function add_rewrite_rules( $wp_rewrite ) 
{
$new_rules = array
(
    '(testpage)/(.+?)/page/?([0-9]{1,})/?$' => 'index.php?pagename='.
    $wp_rewrite->preg_index(1).'&varname='.
    $wp_rewrite->preg_index(2).'&page='.
    $wp_rewrite->preg_index(3),

    '(testpage)/(.*?)/?$' => 'index.php?pagename='.
    $wp_rewrite->preg_index(1).'&varname='.
    $wp_rewrite->preg_index(2)
);
// Always add your rules to the top, to make sure your rules have priority
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

function query_vars($public_query_vars)
{
$public_query_vars[] = "varname";
return $public_query_vars;
}

function ebi_flush_rewrite_rules()
{
global $wp_rewrite;
$wp_rewrite->flush_rules();
}

add_action( 'init', 'flush_rewrite_rules');
add_action('generate_rewrite_rules', 'add_rewrite_rules');
add_filter('query_vars', 'query_vars');

我希望这能为将来的其他人节省一些时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-30 17:30:10

我想出了如何让它在一个特定的页面名称上工作,这是为将来有问题的人准备的:

代码语言:javascript
复制
function add_rewrite_rules( $wp_rewrite ) 
{
    $new_rules = array
    (
        '(testpage)/(.+?)/page/?([0-9]{1,})/?$' => 'index.php?pagename='.
        $wp_rewrite->preg_index(1).'&varname='.
        $wp_rewrite->preg_index(2).'&page='.
        $wp_rewrite->preg_index(3),

        '(testpage)/(.*?)/?$' => 'index.php?pagename='.
        $wp_rewrite->preg_index(1).'&varname='.
        $wp_rewrite->preg_index(2)
    );
    // Always add your rules to the top, to make sure your rules have priority
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

function query_vars($public_query_vars)
{
    $public_query_vars[] = "varname";

    return $public_query_vars;
}

function ebi_flush_rewrite_rules()
{
    global $wp_rewrite;

    $wp_rewrite->flush_rules();
}

add_action( 'init', 'flush_rewrite_rules');
add_action('generate_rewrite_rules', 'add_rewrite_rules');
add_filter('query_vars', 'query_vars');
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13140182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档