You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中为book-store页面配置URL重写规则实现友好URL求助

我来帮你搞定这个URL重写的问题!你已经走对了第一步——添加自定义查询变量,接下来只需要补全重写规则,再在页面模板里处理逻辑就行。下面是完整的解决方案:

第一步:完善自定义查询变量

先把你没写完的query_vars过滤器补全,确保category_name和book_id这两个变量都能被WordPress识别:

add_filter('query_vars', 'add_book_store_vars', 0);
function add_book_store_vars($vars) {
    $vars[] = 'category_name';
    $vars[] = 'book_id';
    return $vars;
}
第二步:添加URL重写规则

接下来要注册重写规则,让WordPress能正确解析你想要的URL结构,把请求映射到book-store页面并传递对应变量:

add_action('init', 'book_store_rewrite_rules');
function book_store_rewrite_rules() {
    // 匹配 /book-store/category/{category_name}
    add_rewrite_rule(
        '^book-store/category/([^/]+)/?$',
        'index.php?pagename=book-store&category_name=$matches[1]',
        'top'
    );

    // 匹配 /book-store/book/{book_id}
    add_rewrite_rule(
        '^book-store/book/([0-9]+)/?$',
        'index.php?pagename=book-store&book_id=$matches[1]',
        'top'
    );
}

这里简单解释下:

  • 正则表达式里,[^/]+用来匹配任意非斜杠字符作为分类名,[0-9]+则只匹配数字作为书籍ID,这样更精准。
  • index.php?pagename=book-store明确指定要加载slug为book-store的页面。
  • top参数让这个规则优先于WordPress默认规则,避免冲突。
第三步:刷新重写规则

添加完规则后必须刷新重写规则才能生效,操作很简单:

  • 登录WordPress后台,进入设置 → 固定链接
  • 不用修改任何设置,直接点击保存更改按钮即可。
第四步:在页面模板中处理逻辑

现在编辑book-store对应的页面模板(比如page-book-store.php),在里面判断当前访问的是分类页还是书籍详情页,然后获取变量并展示内容:

<?php
get_header();

// 获取自定义查询变量
$category_name = get_query_var('category_name');
$book_id = get_query_var('book_id');

if ($category_name) {
    // 处理分类页面逻辑
    echo '<h1>分类:' . esc_html($category_name) . '</h1>';
    // 这里可以添加查询该分类下书籍的代码,比如自定义WP_Query
} elseif ($book_id) {
    // 处理书籍详情页逻辑(假设书籍是自定义文章类型book)
    $book = get_post($book_id);
    if ($book && $book->post_type === 'book') {
        echo '<h1>书籍:' . esc_html($book->post_title) . '</h1>';
        echo '<div>' . apply_filters('the_content', $book->post_content) . '</div>';
    } else {
        echo '<p>未找到该书籍</p>';
    }
} else {
    // 默认的书店首页内容
    echo '<h1>欢迎来到书店</h1>';
    echo '<p>浏览我们的分类或热门书籍吧!</p>';
}

get_footer();
?>

如果你的书籍不是用自定义文章类型创建的,记得调整获取书籍数据的代码,适配你的实际数据结构。

内容的提问来源于stack exchange,提问作者proPhet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:29:41