Ответы в темах

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Автор iij

    (@iij)

    уфф. мозг стёрся порядочно от этой проблемы. еще мой деревянный английский…но в итоге complete (при достижении профита минут пять прыгал с поднятыми руками)

    как в итоге было сделано (если вдруг кому надо):

    в functions.php темы добавляем:

    принудительное обновление пермалинков:

    add_action('init', 'seasons_flush_rewrite_rules');
    function seasons_flush_rewrite_rules()
    {
       global $wp_rewrite;
       $wp_rewrite->flush_rules();
    }

    добавление нового правила обработки (по ссылке двумя постами выше более продвинутый вариант, который с помощью RewriteAPI`шных функций генерируют правила для всех возможных вариантов. У меня же урезанный вариант, т.к. больше и не надо) :

    add_action('generate_rewrite_rules', 'seasons_add_rewrite_rules');
    function seasons_add_rewrite_rules( $wp_rewrite )
    {
      $new_rules = array(
         'seas/(.+?)/?$' => 'index.php?pagename=seas&se=' .
           $wp_rewrite->preg_index(1) );
      $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
    }

    Чтобы не просто адресная строка менялась, но и заключенная в ней нужная нам переменная сохранялась:

    function query_vars($public_query_vars) {
     	$public_query_vars[] = "se";
    	return $public_query_vars;
    }
    add_filter('query_vars', 'query_vars');

    После чего в шаблон странички добавляем:

    global $wp_query, $wp_rewrite;
    if ($wp_rewrite->using_permalinks()) {
       $seas = $wp_query->query_vars['se'];
    } else {
       $seas = $_REQUEST['se'];//или GET
    }

    $seas — то что нужно.

    опять же, всё это есть тут и даже тут, я просто подрезал од себя.

    всем спасибо.

    Автор iij

    (@iij)

    http://www.prodeveloper.org/create-your-own-rewrite-rules-in-wordpress.html
    что-то уже близкое… уже щупаю) (от помощи всё еще не отказываюсь=)

    Автор iij

    (@iij)

    вроде бы это в wp-includes/rewrite.php
    http://phpxref.com/xref/wordpress/wp-includes/rewrite.php.source.html

    ухх

    Автор iij

    (@iij)

    спасибо, что отозвались
    1. ну вот, http://mysite.ru/wp/seas/2008-2009/ не работает (а работает вариация http://mysite.ru/wp/seas/?se=2008-2009)
    2. да, я тоже вчера вечером подумал.
    строка
    RewriteRule . /wp/index.php [L]
    как я понял, означает «всю адресную строку вордпресса заменяем на index.php, который уже внутри обрабатывает всё это».
    Значит, можно внутри него вставить фрагменты обработки и моих переменных наравне с cat, p и другими.
    Осталось только узнать, где в коде это осуществляется.

Просмотр 4 ответов — с 1 по 4 (всего 4)