упрощенные гостевые публикации

трудно наверное изъясниться, но попробую;
новостной сайт, обычный ВП с обычной БД;
хочу – чтобы сделать блок, например, "пресс-релизы", где или каждый, или одобренный админом юзер мог просто кликнуть на "добавить свой пресс-релиз" и попал на форму добавления публикации – но не стандартную, а "упрощенную", то есть без вида админки и прочего, без возможности выбрать категорию, тег и так далее.
для такого юзера, добавляющего такой пост, видны поля:

  • название пресс-релиза,
  • источник (чей пресс-релиз),
  • сам, собственно, текст релиза.

и ВСЕ: категория автоматом чтоб стала нужная – то есть "пресс-релизы".
ну вывести отдельно категорию в отдельный блок уже не проблема.

точно также, возможно, сделать еще один блок – например, "события" – куда также каждый мог бы добавить свое, и видел при этом поля, например,

  • суть события, описание,
  • дата,
  • место.

ну и так далее по потребностям.

то есть такие себе "альтернативные" пользовательски настроенные типы однотипных публикаций, каждой из которых присвоить уникальную категорию и вывести в отдельный блок.

вопрос – как это сделать?
давать всем при регистрации права на публикацию – значит, дать возможность выбрать тег, категорию, и вообще – значит, показать много лишнего людям, для которых и так все это может оказаться слишком сложных; которые могут там натупить, или нагадить.

подумывал даже воспользоваться каким-нибудь ВНЕШНИМ средством: то есть у себя тут только форма, а физически чтобы это находилось на стороннем сервисе (может даже в гугл-доксах…), а тут только выводилось в соответствующий блок.
но все же хотелось бы родными вордпрессовскими силами реализовать..

спасибо!

1. TDO Mini Forms
или
2. Изучить как рабоатет wp_insert_post и соорудить форму на сайте для постинга драфтов, который потом будут апрувиться модератором.
Примерно так:

// Создаем обьект для добавления поста
  $my_post = array();
  $my_post['post_title'] = $zaglavie;
  $my_post['post_content'] = $text;
  $my_post['post_status'] = 'draft';
  $my_post['post_author'] = 3; // id юзера с правми публикации
  $my_post['post_category'] = array();


  // Добавляем драфт в базу
  $new_post_id =  wp_insert_post( $my_post );
  add_post_meta($new_post_id, 'nameofpartic', $name);
  add_post_meta($new_post_id, 'electroadres', $email);

                        // Письмо админу
                        $admurl = get_bloginfo('url')."/wp-admin";
                        $myemail = 'noreply@bla-bla.ua'; // с какого адреса отправляем
            $email = 'bla-bla@bla-bla.ua'; // куда приходят письма
            $subject = 'Новый черновик';
            $header = 'From: ' . $myemail;
            $text_email = 'Гражданин ' . $name . ' написал новую запись: ' . $zaglavie . "\n";
            $text_email .= 'Проверьте по адресу ' . $admurl . "\n";
            
            @mail($email, $subject, $text_email, $header);
Anonymous
Отправить
Ответ на: