Задать вопрос
  • ЧПУ WordPress конфликтует с кастомным ,как исправить?

    @berlevdv
    Возможно криво, но смог решить, помогла статья

    Необходимо переназначить Rewrite:
    add_filter( 'rewrite_rules_array','my_insert_rewrite_rules' );
    add_filter( 'query_vars','my_insert_query_vars' );
    add_action( 'wp_loaded','my_flush_rules' );
    
    // Сбиваем правила flush_rules(), если наших еще нет в списке (операция ресурсоемкая, поэтому не стоит ее делать каждый раз)
    function my_flush_rules(){
        $rules = get_option( 'rewrite_rules' );
    
        // достаточно проверить, есть ли в списке хотя бы одно из наших правил
        if ( ! isset( $rules['biography/([^/]*)/?$'] ) ) {
                global $wp_rewrite;
                $wp_rewrite->flush_rules();
        }
    }
    
    // Добавляем наши правила
    function my_insert_rewrite_rules( $rules )
    {
        $newrules = array();
        $newrules['biography/([^/]*)/?$'] = 'index.php?pagename=biography';
        return $newrules + $rules; // так оно добавляет наши правила к уже существующим, а еще мы можем тупо убрать все и вернуть только свой список, сделав return $newrules;
    }
    
    // Добавляем переменную id, чтобы WP воспринимал ее
    function my_insert_query_vars( $vars )
    {
        array_push($vars, 'id');
        return $vars;
    }


    Теперь будут открываться страницы типа site.ru/biography/a/

    Далее необходимо в коде обрабатывать полученную ЧПУ (я так сделал, ибо не понял как ещё можно параметры передать), в этом мне помогла статья:

    P.S.: Я совсем не программист и досконально не разбирался, по-этому в коде может быть лишнее.
    Ответ написан