【问题标题】:Mod_Rewrite on Query String in WordPress installationWordPress 安装中查询字符串的 Mod_Rewrite
【发布时间】:2013-07-18 14:10:20
【问题描述】:

我正在尝试创建一个简单的预订表格。单独页面上有四个选项(团体、公司、学生和场地)。

例如:如果用户单击“立即预订”以获得“团体体验”,它应该将他们带到一个动态页面,该页面包含带有查询字符串“Group-Experience”的表单。此查询字符串将用于主题字段的值。

现在的问题,目前这就是我所拥有的:

网址:/book/?menu=group-experience
主题字段:“组体验”。

我想要:

网址:/book/group-experience
主题字段:“团体体验”

我知道了,所以 - 被删除了:

<?php
$menu = str_replace ( "-", " ", $_GET['menu']);
?>

我查看了 StackOverflow 和其他网站,但找不到与 WordPress 一起使用的方法 - 表单位于模板文件中。

我现在的.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /lab/foodfiendexp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /lab/foodfiendexp/index.php [L]
</IfModule>

【问题讨论】:

    标签: php wordpress mod-rewrite query-string


    【解决方案1】:

    您必须添加页面重写规则,为此将以下代码添加到functions.php

    add_filter( 'page_rewrite_rules', 'book_page_rewrite_rules' );
    function book_page_rewrite_rules( $rewrite_rules )
    {
        end( $rewrite_rules );
        $last_pattern = key( $rewrite_rules );
        $last_replacement = array_pop( $rewrite_rules );
        $rewrite_rules +=  array(
            '(.+?)/([^/]+)/?$' => 'index.php?pagename=$matches[1]&menu=$matches[2]',
            $last_pattern => $last_replacement,
        );
        return $rewrite_rules;
    }
    
    add_rewrite_tag('%menu%','([^&]+)');
    

    然后从 Settings -> Permalinks 更新永久链接结构,你只需再次点击保存。

    然后你访问你的菜单

    $menu = get_query_var('menu');
    

    现在你的 url 应该可以使用了

    /book/group-experience 
    

    考虑到书是一个页面,如果你需要给一个帖子添加重写规则,把它改成一个帖子重写规则

    更多详情:http://codex.wordpress.org/Rewrite_API/add_rewrite_rule

    另外,如果你需要一个重写规则检查器,这个插件非常好:http://wordpress.org/plugins/monkeyman-rewrite-analyzer/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多