Публикация в группе: Плагин WP-Recall - Личный кабинет на WordPress

Категории группы: Полезное

И так... Сегодня хочу рассказать вам как можно добавить страницу личного кабинета (ЛК) отличную от стандартной страницы, за вывод содержимого, который отвечает файл autor.php. Если вы пользуетесь плагином WP_RECALL, вы должны были уже быть знакомым с этим файлом. Так как для работы плагина необходимо вызвать функцию wp_recall().

Для начала немного теории. Зачем автор задействовал именно этот файл? Дело в том что в Вордпрессе на запросы к определённым данным, в данном случае данные пользователя,  за это отвечает отдельный файл. Самым главным файлом является index.php, если WordPress не находит нужный ему файл для вывода определённого контента, то загружается именно этот файл.

Данную статью я решил написать потому, что на сайте один из пользователей задал вопрос "Как добавить ЛК на любой странице сайта?". И ответ был "Никак", потому что за вывод страниц отвечает файл page.php, а в него, по умолчанию, не передаются данные пользователя.

И как вы уже наверное догадались, простым нажатием кнопочки это не сделать, поэтому будем писать дополнительные функции. Как всегда для этого нам понадобиться наш файл functions.php, прямые руки, PHP редактор (например Notepad++) ну и файл шаблона пусть будет page.php. Я буду показывать на примере шаблона который идёт в комплекте с WordPress, под названием twentythirteen.

Теперь нам нужно сделать копию файла page.php и переименовать его например в profile.php. Открываем наш новый файл в PHP редакторе. Если вы хотите что бы под личным кабинетом выводились все посты которые были опубликованы пользователем, то ничего не удаляем, а лишь вставляем код if(function_exists('wp_recall')) wp_recall(); в том месте где хотите что бы отображался личный кабинет. Главное что бы это было до начала вызова основного цикла loop или после него. Т.е. либо перед while ( have_posts() ) : the_post(); либо после него endwhile;. Ну а если вам не нужно показывать публикации пользователя, а нужен только ЛК, то просто удалите весь этот цикл. И вместо него вставьте код if(function_exists('wp_recall')) wp_recall();

Далее нам необходимо сообщить вордпрессу какой файл у нас отвечает за вывод личного кабинета. Открываем наш файл functions.php и пишем в нём следующий код:

function loadWordPressTemplate($template) {
    global $wp_query;
    if ($wp_query->is_404) {
        $wp_query->is_404 = false;
        $wp_query->is_archive = true;
    }
    header("HTTP/1.1 200 OK");
    include($template);
    exit;
}

function templateRedirect() {
    global $wp_query;
    if( array_key_exists('author_name', $wp_query->query_vars) && !empty($wp_query->query_vars['author_name']) ) {
        loadWordPressTemplate(TEMPLATEPATH . '/profile.php');
    }
}

add_action('template_redirect', 'templateRedirect');

Особо в подробности вас вникать не буду, кому интересно как это работает сам узнает. А остальным главное что бы это работало =) Скажу лишь то, что одна функция у нас отсекает ошибку 404, а другая проверяет если ли запрос к личному кабинету пользователя или нет, и если есть такой запрос то загружает наш файл profile.php.

На этом этапе можно остановиться. Сейчас мы получили только отдельный файл шаблона ЛК, который можно оформить как хотим, но по сути это можно было сделать и со стандартным шаблоном author.php. Но при этом мы так же имеем стандартную ссылку на личный кабинет /author/kalbac . Мне захотелось что бы ссылка выглядела немного иначе. Например: /profile/kalbac.html Для этого нам добавить ещё одну функцию в файл functions.php

function change_author_permalinks() {
    global $wp_rewrite;
    $wp_rewrite->author_base = 'profile';
    $wp_rewrite->author_structure = '/' . $wp_rewrite->author_base. '/%author%.html';
    $wp_rewrite->flush_rules();
}

add_action('init','change_author_permalinks');

После этого вам, возможно ещё, придётся обновить структуру постоянных ссылок. Для этого просто заходим в админку вашего сайта, и в разделе "Параметры" -> "Постоянные ссылки" нажимаем кнопку "Сохранить изменения"

Спасибо, что дочитали до конца. Надеюсь вам понравилась статья. Ставим лайки =)

61

Автор публикации

не в сети 2 года

Максим Мартиросов

91
Разрабатываю, модернизирую сайты и плагины для Wordpress. А так же дополнительные модули для Woocommerce
Комментарии: 13Публикации: 2Регистрация: 16-08-2013Продаж/Покупок: 0/0