Как использовать wp_editor для добавления новостей из фронтенда

В прошлых уроках я рассказывал вам о том, как создать форму для добавления записей не заходя в админку используя функцию wp_insert_post. В этом уроке я расскажу вам, как дополнить прошлый урок и сделать полноценный редактор со всеми bb кодами, загрузкой медиафайлов и т.д.

1. Форма и вызов функции

Для того чтобы вызвать функцию wp_editor, нужно создать кастомную страницу, я уже рассказывал вам как ее создать в уроках по добавлению новостей не заходя в админку в пунктах 2 и 3. После того как вы ее создали, в ней нужно подключить <?php wp_head(); ?> и <?php wp_footer(); ?> без этого вы не сможете вызвать редактор.

Вот что получилось у меня:


<?php /* Template Name: AddPost*/ ?>
<html>
<head>
<?php wp_head(); ?>
<meta charset="utf-8" />
</head>
<body>

&nbsp;

<?php wp_footer(); ?>
</body>
</html>

После этого, между тегами body вызовем ту самую функцию wp_editor, внеся в нее настройки. Редактор можно настроить на ваш вкус, убрать кнопки которые вам не нужны, включить или отключить загрузку медиафайлов и многое другое. Более подробную информацию о редакторе читайте на wordpress кодекс в статье о wp_editor. Вставляем код между тегами body:


<form action="<?php bloginfo('template_url'); ?>/handler.php" method="post">
<label for="title">Заголовок: </label><input size="80" type="text" name="title" /><br />
<?php
$settings = array(
'textarea_name' => 'description',
'textarea_rows' => 5,
'quicktags' => false,
'media_buttons' => false,
'dfw' => true,
'tinymce' => array(
'toolbar1'=> 'bold,italic,underline,bullist,numlist,link,unlink,undo,redo'
)
);
wp_editor($contentFromPage, 'editpost', $settings);
?>
<br /><input type="submit" name="send" value="Submit" />
</form>

Вот что у вас получится в итоге:

Используем функцию wp_editor

Как вы наверное заметили, как и в прошлом уроке, я прописал actions и ссылаюсь на файл handler.php, для этого нужно создать его он будет немного отличаться от предыдущего варианта.

Сохраняем файл и переходим к следующему пункту.

2. Обработчик

Обработчик будет обрабатывать переменные которые он получит из формы и добавлять запись с указанными значениями с помощью функции wp_insert_post.

Создаем файл handler.php в корне вашего шаблона, и вставляем в него код:


<?php
define('WP_USE_THEMES', false);
require( $_SERVER['DOCUMENT_ROOT'] .'/wp-blog-header.php');
?>

Данный код дает возможность использовать функции WordPress в стороннем файле. После кода вставляем наш обработчик wp_insert_post:


<?php
if(isset($_POST['send']) == '1') {
$post_title = $_POST['title'];
$post_content = $_POST['description'];

$new_post = array(
'post_author' => $user->ID,
'post_content' => $post_content,
'post_title' => $post_title,
'post_status' => 'publish'
);

$post_id = wp_insert_post($new_post);

$post = get_post($post_id);
wp_redirect($post->guid);
}
?>

Обработчик получает переменные $_POST заносит их в общий массив и добавляет запись, после чего перенаправляет вас на страницу записи.

Наша форма добавления с использованием редактора wordpress готова. Если вдруг возникнут вопросы задавайте их в комментарии, буду рад ответить. Лайки и репосты данной записи приветствуются.

Хотите подобный функционал, верстку либо помощь в настройке вашего сайта?
Свяжитесь со мной

4 Комментария к “Как использовать wp_editor для добавления новостей из фронтенда”

  • Леша ·
    14.10.2014 в 14:49
    #

    пост отправил/опубликовал, теперь хочу его отредактировать или удалить

    • Admin ·
      08.11.2014 в 21:20
      #

      Пока нету урока на эту тему, в будущем напишу. А если вкратце, то вы должны получить данные поста который хотите рактировать, и всунуть их в форму. И при отправке поста, обновлять существующий.

  • Юля ·
    06.03.2016 в 18:27
    #

    дорогой админ спасибо вам большое что указали мне в какую сторону нужно капать что бы реализовать задуманное…но тем не менее я к вам с вопросом, нет сил уже разбираться, так может вы мне подскажите, я все сделала как указанно в посте но у меня не отображаются кнопки редактора, просто пустое серое поле….в чем может быть проблема?

    • Admin ·
      05.07.2016 в 18:08
      #

      Все должно работать, напишите мне через форму и укажите фтп доступ к сайту, посмотрю в чем проблема.

  • Оставить отзыв

    (обязательно)

    (обязательно)


    Наши друзья
    - ARTtime - Блог о Photoshop и Дизайн
    - Блог о дизайне и арте
    Реклама