【问题标题】:Wordpress Custom URL RewritesWordpress 自定义 URL 重写
【发布时间】:2011-03-19 10:51:43
【问题描述】:

我的站点中有链接,这些链接将查询传递给从外部数据库查询的页面。这很好用,例如

mysite.com/catalog/?tl=flooring

但是我想重写这个 url 以显示为

mysite.com/catalog/flooring

我试过修改wordpress中的重写规则,但总是显示索引页

add_filter('rewrite_rules_array','wp_insertMyRewriteRules');
add_filter('query_vars','wp_insertMyRewriteQueryVars');
add_filter('init','flushRules');

// Remember to flush_rules() when adding rules
function flushRules(){
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}

// Adding a new rule
function wp_insertMyRewriteRules($rules)
{
    $newrules = array();
    $newrules['(catalog)/([a-zA-Z0-9 ]+)$'] = '/catalog/?tl=$matches[2]';
    return $newrules + $rules;
}

// Adding the id var so that WP recognizes it
function wp_insertMyRewriteQueryVars($vars)
{
    array_push($vars, 'id');
    return $vars;
}

【问题讨论】:

    标签: php wordpress mod-rewrite url-rewriting


    【解决方案1】:

    在 WordPress 中重写规则并不像您期望的那样工作。所有重写规则都映射到一个文件处理程序(几乎总是index.php),而不是另一个 URL。

    这是一个简短的代码示例;

    $rules['catalog/(.*)/?'] = 'index.php?pagename=catalog&tl=$matches[1]';
    array_push($query_vars, 'tl'); // note query var should match your query string
    

    这会将catalog/whatever 映射到WordPress 页面“目录”,并传递查询变量“tl”。您可以为“目录”创建一个页面模板,然后使用get_query_var('tl') 获取“tl”的值。

    同时避免使用像 id 这样的查询变量 - 使用更独特的东西(如 'tl')以避免与 WordPress 发生冲突。

    并且不要在每次初始化时刷新规则!这是不好的做法,并且会写信给.htaccess 并在每次页面加载时调用数据库更新!

    每当您更新帖子或永久链接结构时,WordPress 都会刷新永久链接(只需在更改代码时更新永久链接)。

    【讨论】:

    • 是否可以重定向到子页面?我已将 postname 放入 pagename,但它实际上是在重定向页面。
    • 如果是子页面,pagename 应该是 slug path - 例如pagename=parentname/childname
    【解决方案2】:

    This article over at Raazorlight 更详细地介绍了在 WP 中获取查询字符串和 URL 重写的过程。

    另外,请检查那里的 cmets,看看为什么如果您重新保存永久链接,可能不需要调用 flushRules()。可选地,flushRules() 在插件激活回调期间只能调用一次。

    深入挖掘,评论者“pmdci”链接到有关使用自定义分类法将查询传递给自定义帖子类型的相关主题的指导性帖子/传奇

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多