Начиная с шестой версии WP-Recall в плагин стали активно внедряться хуки WordPress, которые мы можем использовать для создания своих вкладок в личном кабинете пользователя.
А в седьмой версии мы можем создавать свои дополнения.
Что такое дополнение для WP-Recall?
Плагин WP-Recall не может содержать весь необходимый для пользователей функционал, поэтому мы можем расширять его функциональность за счет установки различных дополнений. Каждое дополнение добавляет свой функционал к плагину и позволяет получать и использовать новые возможности плагина на вашем сайте.
Плагин уже содержит некоторые базовые дополнения, которые активируются при первоначальной установке плагина, но вы всегда можете отключить дополнения которые вам не нужны.
Дополнения могут писать как обычные пользователи плагина WP-Recall, так и сами разработчики плагина, поэтому у вас всегда есть возможность выбрать наиболее подходящее под ваши задачи дополнение в каталоге дополнений.
Зачем вообще создавать свое дополнение?
- Дополнение легче дорабатывать по мере необходимости
- Дополнение можно распространять как бесплатно, так и на платной основе, получая от его распространения выгоду
- Свое дополнение вы можете бесплатно разместить в каталоге дополнений WP-Recall
- Пользователи, установившие ваше дополнение, смогут получать автоматически обновления к вашему дополнению
- Вы решали какую-то задачу и посчитали что это может еще кому-то пригодиться
Как создать свое дополнение?
Предлагаю в этой статье ознакомиться с примером создания своего дополнения для WP-Recall, которое будет выводить нашу вкладку в личном кабинете пользователя, в которой выведем форму, созданную с помощью популярного плагина Contact Forms 7
И так рассмотрим этот процесс подробно и по шагам.
Для начала создадим пустую папку, которой дадим уникальное название. Пусть это будет contact-form
Далее в этой папке создадим два обязательных файла. Первый файл info.txt
, в нем мы должны разместить информацию о нашем дополнении:
Name: My contact form;
Version: 1.0;
Description: Дополнение для WP-Recall, добавляющее свою вкладку с контактной формой;
Support Core: 10.0.0;
Author: Плечев Андрей;
Author Uri: https://codeseller.ru;
Add-on Uri: https://codeseller.ru/?p=3695;
Как можно увидеть тут мы указываем:
- Name - наименование нашего дополнения: "My contact form",
- Version - его версию: 1.0,
- Description - описание к нашему дополнению,
- Support Core - минимальная версия плагина WP-Recall c которой дополнение однозначно работает,
- Author - имя автора,
- Author Uri - ссылку на страницу разработчика,
- Add-on Uri - ссылку на страницу дополнения.
Затем создаем второй файл с именем index.php
В этом файле будет размещаться код наших вкладок для личного кабинета.
Обратившись к странице с описанием хуков и функций WP-Recall мы можем найти пример для создания дополнительной вкладки в плагин и кнопки, по нажатию которой эта вкладка будет отображаться.
Итак, рассмотрим функцию добавления своей вкладки в ЛК:
rcl_tab($args);
Описание содержимого передаваемого массива $args
можно найти на странице описания функции rcl_tab();
Подробное описание функции rcl_tab()
С этой функцией добавление новой вкладки в ЛК стало простым и незатейливым!
Добавим в личный кабинет пользователя вкладку с контактной формой выведенной с помощью шорткода плагина Contact Forms 7
add_action('init','add_tab_my_contactform'); function add_tab_my_contactform(){ $tab_data = array( 'id'=>'myform', 'name'=>'Форма контакта', 'public'=>0,//делаем вкладку приватной 'icon'=>'fa-envelope',//указываем иконку 'output'=>'menu',//указываем область вывода 'content'=>array( array( //массив данных первой дочерней вкладки 'callback' => array( 'name'=>'my_contactform_recall_block',//функция формирующая контент ) ) ) ); rcl_tab($tab_data); } function my_contactform_recall_block($user_lk){ $content = '<h3>Наша контактная форма:</h3>'; $content .= do_shortcode('[contact-form-7 id="52" title="Контактная форма 1"]'); return $content; }
После этого мы можем сохранить изменения в файле index.php
Запакуем папку нашего дополнения в ZIP-архив.
Далее идем на страницу менеджера дополнений WP-Recall и загружаем наш архив через форму загрузки:
После загрузки дополнения оно появится в списке дополнений и мы сможем его активировать:
После активации нашего дополнения, в личном кабинете пользователя появиться дополнительная кнопка и вкладка которые мы создали и вывели через наше дополнение:
Важно! Созданные файлы должны быть в кодировке UTF-8 без BOM
Вот собственно собственно и всё, выкладываю здесь исходники нашего созданного дополнения, может кому то и пригодится)
Архив дополнения из примера
Сейчас немного пропала строчка, которая позволяет выводить вкладку только автору лк
Читаем внимательно полное описание функции add_tab_rcl на странице http://codeseller.ru/xuki-i-filtry-wp-recall/
Эта настройка теперь в составе массива необязательных настроек.
Устанавливаю дополнение,после как указываю id нужной формы,начинаются проблемы,становится невозможным выйти из личного кабинета,из админ панели,нажимаешь выход направляет wp-login.php action=logout&_ wpnonce =133a4f4f7e и белый фон,пробовал устанавливать код сразу functions.php,но все также,в личном кабинете все отображается как надо и Контактная форма появляется,но выйти уже не как,пока через ftp не удалиж приложение..В чем может быть причина? Если есть возможность и понятно,очень буду благодарен за подсказку
Если дело в коде дополнения которое пытаетесь вы добавить, то надо смотреть его код, по другому никак не понять, что там не верно.
Поставил дополнение , все работает но если "походить" по кнопкам в личном кабинете то вместо формы отображается сам шорткод , если на этой вкладке обновить страницу то все работает нормально , видимо что то с ajax ?
Код
function add_tab_myform_rcl($array_tabs){
//myform - идентификатор вкладки дополнения
//my_contactform_recall_block - название функции формирующей контент вкладки дополнения
$array_tabs['myform']='my_contactform_recall_block';
return $array_tabs;
}
add_filter('ajax_tabs_rcl','add_tab_myform_rcl');
стоит , грубо говоря я изменил только id формы из стандартного примера.
p.s. почему то не сработал тег 'code' в сообщении.
с ajax все в порядке, непорядок с инициализацией формы через ajax, это к разработчику плагина. Дополнение с выводом шорткода cf7 был приведен только в качестве примера.
Если очень хочеться выводить форму через этот плагин, то выводите содержимое вкладок другим способом, не через ajax
оставил только код
add_tab_rcl('myform','my_contactform_recall_block','Форма контакта',array('public'=>0,'class'=>'fa-envelope','order'=>20));
function my_contactform_recall_block($user_lk){
return 'Наша контактная форма:'.do_shortcode('[contact-form-7 id="1143" title="Контактная форма 1"]');
}
теперь нельзя зайти в админку , белый экран просто и все , в чем может быть проблема?
взял удалил весь код из index.php , все равно белый екран при входе в админку , что не так?
Причины могут быть разными, от ошибки синтаксиса до редикларирования функции, пока не видно ошибку php ничего сказать нельзя.
включил отображение ошибок , конфликтует файл wp-includes/pluggable.php , строки 424,437, с 940 по 957 и 1178 строка. Из этих строк я понял что там что то с куками , файл стандартный и мною не менялся.
Сама ошибка: Warning: Cannot modify header information - headers already sent by (output started at /home/путь к файлу/pluggable.php
проблему решил , оказался после ?> банальный перенос строки , из за этого была ошибка
function my_contactform_recall_block($user_lk){
return 'Наша контактная форма:'.do_shortcode('[public-form post_type='listings']');
}
Вставил свой шорткод. Не работает.
Что именно не работает? Вы можете не заставлять вытягивать все клещами? Неужели так трудно подробно описать что было сделано, что в итоге работает, а что нет или работает неправильно?
После установки, полностью вся админка перестаёт работать. Белый экран..
С такими проблемами надо создавать тему на форуме, выкладывайте там код, который вставляете после чего возникают проблемы, будем разбираться.
Привет. Мне нужно вывести в таком дополнении статистику игрока ( на пример blitzinfo.ru/stats/?nick=Riko_s). Такая статистика на сайте уже есть, но она работает так: Воодишь ник, жмешь кнопку, получаешь статиситку. Мне нужно чтобы пользователь просто открыл вкладу в профиле и увидел статистику по своему нику. Страница со статистикой находится в "page-templates" шаблона
если можете сами, то пишите дополнение, если не можете, то публикуйте задание.
Вкладку в ЛК я то сделал, как мне в ней вывести содержание файла из page-templates?
в статье все подробно описано.
файл шаблона можно подключать через функцию get_template_part();
То есть чтобы вывести во вкладке содержание моя_тема/page-templates/stats-profile.php нужно добавить строку
get_template_part( 'stats', 'profile' );
? Но куда?
Очевидно в функцию которая используется для вывода контента в созданной вкладке ЛК. Прочтите статью, там есть подробный пример.
Только если подключать файл, то выводимый контент будет выводится через echo, а нужно возвращать его через return, как в примере.
Статью выше я прочитал, но про то как вставить шаблон страницы в вкладку в ЛК я не нашел не слова
я не могу в этой статье научить вас языку php, а именно его вам и надо знать, чтобы не задавать таких вопросов.
Подскажите, как добавить в ЛК кнопку-ссылку или же просто ссылку?
либо в своей вкладке ЛК по примеру из этой статьи, либо в нужном месте ЛК через функцию add_block_rcl http://codeseller.ru/api-rcl/add_block_rcl/
Добавлю к словам Андрея еще про cabinet.php - можно добавить ссылку в нужные блоки. Сам не пробовал - но по идее оформив ссылку в html - можно
Андрей, а с выходом новой версии плагина WP-Recall info.txt как-то по другому пишется?
Пишу add-on, но в Add-on менеджере в информации аддона отображается только версия и ссылка на автора, нет названия и описания, правда есть кнопки активации, деактивации и удаления.
Я вроде сравнивал с другими, файл info.txt пишу аналогично! Не пойму в чем проблематика?! 😕
немного изменилось содержание файла info.txt, в статье выше описано его правильное заполнение, можете скачать пример, там также новый порядок заполнения.
Спасибо за столь быстрый ответ, будем творить! 😉
Здравствуйте, сделал все как написано по инструкции( просто скопировал ваш код), хотел тоже сделать контактную форму, но еще одна вкладка в личном кабинете не добавилась и теперь виден код из фала index.php вверху темы.
скачайте себе архив примера дополнения в конце статьи и сравните с тем кодом что получился у вас.
Да,я просто взял архив и поменял шорт-код на свой, все работает, но теперь немного глючит консоль
Здравствуйте! А как быть если на вкладке нет контента, можно ли как то её НЕ выводить если там пусто?
Как правило добавляют условие - контент есть - выводят его, если контента нет - сообщение о том что не голосовал (ну или что там у вас)
а как можно вывести несколько значений ?
например в cabinet.php можно написать
echo $user_info->meta_key;
и в кабинете пользователя отобразится это значение
а тут если выводить через echo то значение отображается на всех вкладках.
а через return можно только один раз выводить.
codeseller.ru/forum/print-his-add-on/ опишите на форуме, что вы делаете и что хотите получить. Создавайте новую тему.
Здраствуйте заметил одну особенность создаю свое дополнение все работает но как происходит обновление самого плагина мое созданное дополнение удаляется приходится делать беккап и активировать заново что это может быть?
видимо вы свое дополнение размещаете в папке плагина, это не верно, для кастомных дополнений есть отдельная папка по пути /wp-content/wp-recall/add-on/, дополнения загружаются в нее автоматически при установке через менеджер дополнений плагина.
Спасибо все понял. Я низнал загружал через FTP в папку плагина
Здравствуйте! Есть ли возможность разделить вкладку профиль на 2 вкладки? Например, вкладка "Профиль" в которой вся информация о пользователе и вкладка "Файлы", где будут храниться все файлы пользователя. Просто всё вместе в одной вкладке выглядит очень громоздко. ?
Здравствуйте. По умолчанию так сделать нельзя.
Если вы обладаете навыками программирования (в совершенстве) - то все идеи реализуемы.
Установил дополнение. Все работает, вот только в фтп в add-on не могу найти его. Или оно устанавливаеться не туда?
Читаем всякие факты https://codeseller.ru/post-group/znaete-li-vy-chto-fakty-o-plagine-wp-recall-i-edinaya-baza-dlya-razrabotki-pod-wp-recall/
Привет! Почему шорткод в HTML выводится выше формирования контента?
какой шорткод?
Чувствую вопрос большой и затянется. На форуме есть подфорум "Пишем свое дополнение..." Создавайте новую тему там. Описывайте что делаете, что получаете, что ожидали
подскажите есть ли плагин, который выводит в личном кабинете в новой вкладке материалы которые ему понравились
Для вопросов есть форум. Вы название темы то видели?
Смотрите закладки https://codeseller.ru/products/bookmarks-recall-polzovatelskie-zakladki-s-wp-recall/