• Столкнулся с проблемой при mod rewrite слова author в ссылке профайла.

    К примеру

    Так работает: site.com/member/vanya

    А вот так не работает: site.com/m/vanya

    Если символов 2 или больше — то работает нормально.

    Вопрос, как сделать чтобы можно было переписать на 1 символ ?

    • Тема изменена 1 месяц назад пользователем wildapache.
Просмотр 14 ответов — с 1 по 14 (всего 14)
  • wildapache, привет. Как-то так:

    function change_author_base_m() {
    global $wp_rewrite;
    $wp_rewrite->author_base = 'm';

    add_rewrite_rule( '^m/([^/]+)/?$', 'index.php?author_name=$matches[1]', 'top' );
    } add_action( 'init', 'change_author_base_m' );

    function fix_m_author_rules( $author_rewrite ) {
    $new_rules = [ '^m/([^/]+)/?$' => 'index.php?author_name=$matches[1]' ];
    return $new_rules + $author_rewrite;
    } add_filter( 'author_rewrite_rules', 'fix_m_author_rules' );
    Автор wildapache

    (@wildapache)

    Perfetct !

    Спасибо.

    Работает !

    function replace_author_permalinks() {
    global $wp_rewrite;
    $wp_rewrite->author_base = 'u';
    $wp_rewrite->author_structure = '/' . $wp_rewrite->author_base. '/%author%';
    }
    add_action('init','replace_author_permalinks');

    интересно почему вот этот простой вариант не работал именно с 1 буквой

    wildapache, данный вопрос упирается в логику работы движка как он парсит URL, это в первую очередь.

    Автор wildapache

    (@wildapache)

    Просто такие реврайты — нужно ещё уметь делать, в том плане, чтобы они не затрагивали базовую работу, чтобы потом не повылазили ещё где-то ошибки.

    wildapache, тоже верно. Код выше учитывает заскоки движка; из нюансов — если потребуется пагинация, нужно будет код дополнять.

    Не сильно вникал в реврайт, по этому нашёл базовую функцию, а она оказалась мало-рабочей, подумал, может это какие-то лимиты самого движка, раз есть ограничения на 1 символ, потому что вспомнил что там поиск тоже с одной буквой. Вот решил тут спросить. Да в принципе проблем с реврайтом особо нет. На счёт пагинации не понял чего именно ?

    wildapache,

    На счёт пагинации не понял чего именно ?

    Пользовательских URL с изменённой базой: /author -> /m (или /u).

    Опять не понял, наверно где-то есть loop для всех авторов ?

    wildapache, когда переписывается база авторских URL (/author/r3n0 -> /u/r3n0), вопрос пагинации (/u/r3n0/page/2) также должен быть учтён в коде, если у авторов предполагается наличие опубликованных записей >1.

    Я о таком не знал, что по «автору» можно листать посты, получается есть loop для авторов.

    Нужно будет поискать потом где-то пример.

    Так как у меня задача просто сделать страницу автора с базовой информацией и всё.

    Но, посмотрю пример с loop авторов, чтобы хоть знать как это работает там

    Ещё один вопрос, как можно сделать выход из аккаунта без подтверждения ?

    К примеру, пользователь нажимает выйти — а его перекидывает на страницу — вы действительно хотите выйти ? Можно — этот эффект — как то убрать ? Чтобы нажал просто выйти — с редиректом на главную

    wildapache, обычно так: esc_url( wp_logout_url( home_url() ) ); (закрывает сессию пользователя и перенаправляет с текущей страницы на главную страницу сайта), если кнопка/ссылка выхода из аккаунта расположена вне топ-бара. Для топ-бара можно использовать функцию вроде:

    function secured_logout_without_confirmation() {
    if ( isset( $_GET['action'] ) && $_GET['action'] === 'logout' && isset( $_GET['_wpnonce'] ) ) {
    if ( wp_verify_nonce( $_GET['_wpnonce'], 'log-out' ) ) { wp_logout();wp_redirect( home_url() );exit; }
    }
    } add_action( 'init', 'secured_logout_without_confirmation', 1 );

    Первый вариант у меня перенапрявляет на страницу подтверждения выхода, второй попробую позже. Мне именно нужно — нажал — вышел (с редиректов на хоум)

    Всё равно требует подтверждения — даже с action secured_logout_without_confirmation

    • Ответ изменён 4 недели, 1 день назад пользователем wildapache.

    Прочитал что как вариант можно сделать на аяксе

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

Для ответа на тему необходимо авторизоваться.