Wordpress - переписать с? Demo на / demo / - PullRequest
0 голосов
/ 24 января 2012

Проблема

Я хочу переписать мою переменную 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');
}
?>

Дополнительная информация

  • Должна работать со всеми сообщениями (не только "my-new-post"").
  • Он не должен возвращать 404.
  • Я должен иметь возможность получить идентификатор сообщения.
  • GET переменная" demo "может быть истинной или пустой.Не важно.

1 Ответ

0 голосов
/ 24 января 2012

Пока это работает ...

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