首页 文章

WordPress安装中的查询字符串上的Mod_Rewrite

提问于
浏览
0

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

例如:如果用户单击立即预订群组体验,则应将其带到包含带有查询字符串“Group-Experience”的表单的动态页面 . 此查询字符串将用于主题字段的值 .

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

URL: / book /?menu = group-experience
subject field: "group-experience" .

我想要:

URL: / book / group-experience
subject field: "Group Experience"

我已经得到它所以' - '被删除:

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

我查看了Stackoverflow和其他网站,但找不到与WordPress一起工作的方法 - 表单在模板文件中 .

我现在的.htaccess:

<IfModule mod_rewrite.c> RewriteEngine叙述在RewriteBase /实验室/ foodfiendexp /重写规则^的index.php $ - [L]的RewriteCond% -f的RewriteCond% -d重写规则! . /lab/foodfiendexp/index.php [L] </ IfModule>

1 回答

  • 0

    您必须添加页面重写规则,以便将以下代码添加到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更新永久链接结构,再次点击save .

    然后你可以访问你的菜单

    $menu = get_query_var('menu');
    

    现在你的url应该合作

    /book/group-experience
    

    考虑book是一个页面,如果你需要将重写规则添加到帖子,请将其更改为重写后规则

    更多细节:http://codex.wordpress.org/Rewrite_API/add_rewrite_rule

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

相关问题