标签: PHP

  • WordPress 中 URL 重写规则

    在 WordPress 中,URL 重写规则是通过一个称为“重写 API”的机制来管理的。这个机制允许 WordPress 将用户友好的 URL(如 /about-us/)映射到实际的查询字符串(如 index.php?p=123)。以下是 WordPress URL 重写规则的基本概念和工作原理:

    1. 重写规则的基本概念

    • 友好的 URL:WordPress 允许用户使用更易读的 URL 结构,这些 URL 通常与内容相关,而不是包含复杂的查询参数。
    • 重写规则:这些规则定义了如何将请求的 URL 转换为 WordPress 可以理解的查询参数。

    2. 重写 API

    WordPress 的重写 API 主要通过以下几个函数来实现:

    • add_rewrite_rule():用于添加自定义的重写规则。
    • add_rewrite_tag():用于添加自定义的重写标签,以便在 URL 中使用。
    • flush_rewrite_rules():用于刷新重写规则,通常在主题或插件激活时调用。

    3. 默认重写规则

    WordPress 默认提供了一些重写规则,主要包括:

    • 文章/year/month/day/post-name/(例如 /2023/10/01/my-post/
    • 页面/page-name/(例如 /about-us/
    • 分类/category/category-name/(例如 /category/news/
    • 标签/tag/tag-name/(例如 /tag/wordpress/

    4. 自定义重写规则示例

    以下是一个简单的示例,展示如何添加自定义重写规则:

    function custom_rewrite_rule() {
        add_rewrite_rule(
            '^custom/([^/]*)/?', // 匹配的 URL
            'index.php?pagename=custom-page&param=matches[1]', // 重写到的查询         'top' // 优先级     ); } add_action('init', 'custom_rewrite_rule');</code></pre> <!-- /wp:code -->  <!-- wp:paragraph --> 在这个示例中,当用户访问 <code>/custom/some-value/</code> 时,WordPress 会将其重写为 <code>index.php?pagename=custom-page&param=some-value</code>。 <!-- /wp:paragraph -->  <!-- wp:heading {"level":3} --> <h3 class="wp-block-heading">5. 刷新重写规则</h3> <!-- /wp:heading -->  <!-- wp:paragraph --> 在添加或修改重写规则后,通常需要刷新重写规则。可以通过访问 WordPress 管理后台的``设置'' -> ``固定链接''页面来自动刷新,或者在代码中调用 <code>flush_rewrite_rules()</code>: <!-- /wp:paragraph -->  <!-- wp:code --> <pre class="wp-block-code"><code>function my_plugin_activation() {     custom_rewrite_rule(); // 添加自定义重写规则     flush_rewrite_rules(); // 刷新重写规则 } register_activation_hook(__FILE__, 'my_plugin_activation');</code></pre> <!-- /wp:code -->  <!-- wp:heading {"level":3} --> <h3 class="wp-block-heading">6. 使用重写标签</h3> <!-- /wp:heading -->  <!-- wp:paragraph --> 重写标签允许你在 URL 中使用动态部分。例如: <!-- /wp:paragraph -->  <!-- wp:code --> <pre class="wp-block-code"><code>function custom_rewrite_tag() {     add_rewrite_tag('%custom_param%', '([^&]+)'); } add_action('init', 'custom_rewrite_tag');</code></pre> <!-- /wp:code -->  <!-- wp:paragraph --> 然后可以在重写规则中使用这个标签: <!-- /wp:paragraph -->  <!-- wp:code --> <pre class="wp-block-code"><code>function custom_rewrite_rule() {     add_rewrite_rule(         '^custom/([^/]*)/?',         'index.php?pagename=custom-page&custom_param=matches[1]',
            'top'
        );
    }
    add_action('init', 'custom_rewrite_rule');

    总结

    WordPress 的 URL 重写规则通过重写 API 提供了强大的功能,允许开发者创建用户友好的 URL。通过使用 add_rewrite_rule()add_rewrite_tag(),可以轻松地添加自定义规则和标签。记得在修改规则后刷新重写规则,以确保新规则生效。

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 知差(chai)网