Приветствую!
Чем старше версия, тем сложнее функционал и медленнее идет разработка.
После большого перерыва я готов предложить к загрузке новую версию моего плагина.
Что нового?
- теперь можно подлючать свой файл стилей и не бояться выхода очередного обновления.
- решены множество проблем в работе скриптов, произведена оптимизация некоторых javascript-ов
- изменена работа и внешний вид произвольных полей профиля в админке
- изменена файловая структура плагина
- изменен порядок публикации записей
Произвольные поля формы публикации
Ранее пользователь публиковать записи мог через свой личный кабинет. Теперь же форма публикации может быть расположена на любой странице сайта через шорткод
[ public-form ]
Если бы на этом изменения закончились, то стало бы скучно, поэтому я не стал останавливаться и ввел в форму публикации поддержку произвольных полей.
Теперь вы можете создать какие-либо свои дополнительные поля для формы публикации через админку на специально созданной для этого странице "Форма публикации". Порядок создания полей и их сортировки в целом схож с созданием и управлением произвольных полей профиля, так что ничего сверхъестественного вы там не увидите. Можно указывать будет ли поле обязательным или нет.
Созданные произвольные поля формы будут выводится в форме публикации сразу после текстового поля с визуальным редактором в той последовательности которую вы указали для них в админке.
Если попытаться опубликовать запись без заполнения обязательных полей, то поля будут выделены красным цветом.
Что дает этот функционал? Например, теперь достаточно легко создать портал объявлений. Можно построить форму публикации с теми полями которые вы считаете нужными и принимать через нее объявления на сайт или какие то заявки, различного вида публикации. Вариантов на самом деле огромное множество, все ограничено вашей фантазией.
Сложность только в порядке вывода данных занесенных в произвольные поля при публикации. После публикации эти данные будут занесены в произвольные поля этой записи и их надо будет вывести на сайте.
Для этих целей я предусмотрел функцию, которая выводит все произвольные поля записи единым блоком:
<?php get_custom_post_meta_recall($post_id); ?>
Просто разместите эту функцию внутри вашего шаблона одиночной записи и передайте внутрь нее идентификатор этой записи, если внутри цикла то так:
<?php echo get_custom_post_meta_recall($post->ID); ?>
и она будет выводить блок данных занесенных в произвольные поля формы публикации для всех записей, если у записи эти данные имеются.
Если же вы знакомы со стандартной функцией для вывода произвольных полей Вордпресс
get_post_meta($post_id,$slug,1);
то вполне можете воспользоваться и ей, только в качестве названия произвольного поля в эту функцию надо передавать ярлык произвольного поля формы, который вы можете видеть при создании этих полей
Создаем ссылки на определенные вкладки в ЛК пользователя
Иногда возникает необходимость обратиться к определенной вкладке в личном кабинете пользователя просто перейдя по ссылке. Например, чтобы сразу перейти на страницу ЛК с открытой вкладкой "Заказы". Раньше это было невозможно, но я заложил основы для реализации этой возможности. Сделать это теперь достаточно легко.
Например, мы имеем ссылку на мой личный кабинет такого плана:
/author/admin/
а если хотим перейти сразу во вкладку отзывы, то ссылка будет иметь вид:
/author/admin/?view=recall
Секрет в том, что мы должны передать GET['view'] запрос содержащий идентификатор кнопки в ЛК, открывающей нужную вкладку.
Чтобы сильно не мучались перечислю идентификаторы кнопок:
privat - открывает вкладку приватных сообщений
recall - вкладка отзывов
order - вкладка заказов, если установлен магазин
profile - владка настроек профиля
groups - вкладка групп
Теперь создать ссылку на определенную вкладку в ЛК пользователя стало просто.
Здравствуйте, а можно ли менять местами вывод произвольных полей в самой форме публикации (кроме варианта "под текстом записи, в том порядке, как в админке"). Допустим мне надо сделать доску объявлений автомобилей. Категории будут выбираться по маркам автомобилей, но рядом надо разместить произвольное поле "модель". По умолчанию это поле будет выводится после текста записи.
Зачем нужны стандартные поля в форме на странице добавления новости "Заголовок" "Текст" "Теги", если форма для того и нужна чтобы создать ее по своим нуждам, и как их убрать оттуда?
Пока только ручками через правку кода этого дополнения. Если интересно, то файл index.php в папке add-on/publicpost
Не подскажете какую часть кода необходимо удалить? думаю это не только мне пригодится
Спасибо за информацию, еще один вопрос: как сделать страницу записей пользователя?
То есть регистрируется пользователь, оставляет запись, как сделать страницу на которой будет список только его записей?
Что я пытаюсь реализовать с помощью вашего творения: хочу сделать возможность отправления приватных заявок пользователями (записи не будут публиковаться а будут все время на модерации), после чего я должен оставить комментарий к его записи, а пользователь должен залогиниться, перейти на страницу записей и прочитать мой комментарий...
записи одного пользователя можно увидеть на странице его архива. На эту страницу можно попасть указав идентификатор пользователя тут /?author=ID либо через его логин /author/login. Эта страница формируется в файле вашего шаблона author.php записи пользователя выводятся там через обычный цикл. Но проблема в том, что там не будут выводится записи находящиеся на модерации. Придется внести уточнение в цикл, указав для вывода записи со статусом 'pending'. Попробуйте разместить перед началом цикла query_posts( 'post_status=pending' ); По идее должно помочь.
к сожалению я не профессионал как вы, чтобы выполнить подобные действия...
не могли бы по подробнее расписать где что поменять и куда что вставить, или сделать платное дополнение?
помогите пожалуйста, мне очень надо это реализовать
я уже описал все действия необходимые для реализации, вам осталось лишь чуть подумать. Посмотрите есть ли в вашем шаблоне файл author.php, если нет, то создаете по алгоритму из установки плагина wp-recall, если файл есть, то можете разместить перед началом цикла query_posts( ‘post_status=pending’ );