【问题标题】:Wordpress rewrite rule for custom PHP page自定义 PHP 页面的 Wordpress 重写规则
【发布时间】:2023-01-27 11:32:45
【问题描述】:

我创建了一个 PHP 页面,我在 wordpress 中使用了一个包含插件。

因此,当我访问 domain.com/kb 时,它向我显示了包含的 PHP 文件,该文件运行良好。

我想让 URL 漂亮所以我尝试将它添加到 php 文件的顶部:

add_rewrite_rule('^kb/([^/]*)/([^/]*)/?','index.php?page_id='.get_the_ID().'&category=$matches[1]&sequence=$matches[2]','top');

但是当我访问 domain.com/kb/123 只是删除 123 并离开 domain.com/kb/

最终,我希望能够访问 domain.com/kb/123/456,在那里我可以将“123”和“456”作为单独的变量读取。

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    方法一:您需要将重写规则添加到 WordPress 站点的 .htaccess 文件中。 您可以在主题的 functions.php 文件中使用 add_rewrite_rule() 函数。

    function custom_rewrite_rule() {
        add_rewrite_rule(
            '^kb/([^/]*)/([^/]*)/?',
            'index.php?page_name=kb&category=$matches[1]&sequence=$matches[2]',
            'top'
        );
    }
    add_action( 'init', 'custom_rewrite_rule' );
    

    方法二:您还需要添加自定义查询变量,以便 WordPress 知道要查找它们。

    function custom_query_vars($vars) {
        $vars[] = 'category';
        $vars[] = 'sequence';
        return $vars;
    }
    add_filter('query_vars', 'custom_query_vars');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 2011-11-30
      相关资源
      最近更新 更多