Wordpress - 从 ?demo 重写为 /demo/

发布于 2024-12-28 10:39:05 字数 691 浏览 0 评论 0原文

问题

我想将我的 GET 变量重写为 /demo/。

我当前的永久链接结构:
/my-new-post/?demo=true

我想要什么:
/my-new-post/demo/

我有这个代码:

它允许“demo”$_GET变量,然后回显“true”。它有效,只剩下重写部分。

<?php
add_filter('query_vars', 'queryvars' );
add_action('parse_query', 'echo_query_var');

function queryvars( $qvars )
{
    $qvars[] = 'demo';
    return $qvars;
}

function echo_query_var() {
    echo get_query_var('demo');
}
?>

其他信息

  • 它应该适用于所有帖子(不仅仅是“我的新帖子”)。
  • 它不应该返回 404。
  • 我应该能够获取帖子 ID。
  • GET 变量“demo”可以为 true,也可以为空。不重要。

Problem

I want to rewrite my GET-variable to /demo/.

My current permalink structure:
/my-new-post/?demo=true

What I want:
/my-new-post/demo/

I have this code:

It allows the "demo" $_GET variable and then echo "true". It works, just the rewrite part left.

<?php
add_filter('query_vars', 'queryvars' );
add_action('parse_query', 'echo_query_var');

function queryvars( $qvars )
{
    $qvars[] = 'demo';
    return $qvars;
}

function echo_query_var() {
    echo get_query_var('demo');
}
?>

Additional information

  • It should work with all posts (not just "my-new-post").
  • It should not return 404.
  • I should be able to get the post ID.
  • GET variable "demo" can be true, or empty. Not important.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

锦爱 2025-01-04 10:39:05

到目前为止这有效...

// Actions - Rewrite rules
add_filter('query_vars', array($wp_comment_pages, 'add_get_variable'));
add_action('generate_rewrite_rules', array($wp_comment_pages, 'add_rewrite_rule'));

// Plugin container
class wp_comment_pages
{   
    // Flush the rules - only needed once
    function flush_rules()
    {
        global $wp_rewrite;
        $wp_rewrite->flush_rules();
    }

    // Add get variable to query vars
    function add_get_variable($public_query_vars)
    {
        $public_query_vars[] = 'demo';
        return $public_query_vars;
    }

    // Generate permalinks
    function add_rewrite_rule($wp_rewrite)
    {
        $new_rules = array(
            '(.+)/demo' => 'index.php?p=' . $wp_rewrite->preg_index(1) . '&demo=true'
        );

        $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
    }
}

This works so far...

// Actions - Rewrite rules
add_filter('query_vars', array($wp_comment_pages, 'add_get_variable'));
add_action('generate_rewrite_rules', array($wp_comment_pages, 'add_rewrite_rule'));

// Plugin container
class wp_comment_pages
{   
    // Flush the rules - only needed once
    function flush_rules()
    {
        global $wp_rewrite;
        $wp_rewrite->flush_rules();
    }

    // Add get variable to query vars
    function add_get_variable($public_query_vars)
    {
        $public_query_vars[] = 'demo';
        return $public_query_vars;
    }

    // Generate permalinks
    function add_rewrite_rule($wp_rewrite)
    {
        $new_rules = array(
            '(.+)/demo' => 'index.php?p=' . $wp_rewrite->preg_index(1) . '&demo=true'
        );

        $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文