【问题标题】:Wordpress - Rewrite from ?demo to /demo/Wordpress - 从 ?demo 重写为 /demo/
【发布时间】:2012-01-24 19:54:04
【问题描述】:

问题

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

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

我想要什么:
/my-new-post/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');
}
?>

其他信息

  • 它应该适用于所有帖子(不仅仅是“my-new-post”)。
  • 不应返回 404。
  • 我应该可以得到帖子 ID。
  • GET 变量“demo”可以为真,也可以为空。不重要。

【问题讨论】:

    标签: wordpress url-rewriting permalinks


    【解决方案1】:

    到目前为止这工作......

    // 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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多