Вывод редактирования/создания поста на frontend

Здравствуйте, необходимо вывести в собственный шаблон возможность создавания\редктирования записи(поста). А  именно вывести стандартный зарузчик медиафайлов, создания миниатюры и текстовый редактор

Добавить Комментарий

Опишу в 2х словах:

Для этого нужно создать новую страницу, допустим site.ru/edit и выбрать созданный заранее новый шаблон.

Далее в файле вашего шаблона выводим поле для заголовка input и textarea(добавить им id или class) для текста.
Добавить div с классом например «div_img»  в который будем вставлять миниатюру.

Для добавления миниатюры используйте следующий код:
http://onwp.ru/question/funkciya-vyzova-zagruzchika-vordpress
Код из примера:

wp.media.editor.insert('[myshortcode id="' + first.id + '"]');
// first.url - адрес картинки

Меняем на:

jQuery('.div_img').html();
jQuery('.div_img').html('<img src="'+first.url+'" />');

Далее к текстовому полю подключаем редактор:

 <?php
 $args = array(
 'wpautop' => 1
 , 'media_buttons' => 1
 , 'textarea_name' => 'field' //id textarea
 , 'textarea_rows' => 20
 , 'tabindex' => null
 , 'editor_css' => ''
 , 'editor_class' => ''
 , 'teeny' => 0
 , 'dfw' => 0
 , 'tinymce' => 1
 , 'quicktags' => 1
 );
 wp_editor('', 'field', $args);
 ?>
 

Создаем кнопку сохранить(простая ссылка или див с классом)

Далее в js пишем событие сохранения, можно через ajax, пример запроса можно посмотреть тут:
http://onwp.ru/question/kak-otpravit-ajax-zapros-v-wordpress

Собрав параметры мы передаем их через  ajax  в php. С помощью php сохраняем запись:

 /*
 * Сохраняем группу через ajax
 *
 */
 // group - название название функции которую прописали в js
 add_action("wp_ajax_group", "k_ajax_group");
 add_action("wp_ajax_nopriv_group", "k_ajax_group");
function k_ajax_group() {
 // Создаем массив
 $my_post = array(
 'post_title' => $_POST['data']['title'],
 'post_content' => $_POST['data']['text'],
 'post_status' => 'publish',
 'post_author' => $_POST['data']['id'],
 'post_type' => 'group'
 );
 // Вставляем данные в БД
 $post_id = wp_insert_post($my_post);
 /*Добавляем произвольные поля */
 add_post_meta($post_id, 'un_status', '1');
 add_post_meta($post_id, 'group_auto', $_POST['data']['auto']);
/* добавим миниатюру */
 set_post_thumbnail($post_id, $_POST['data']['img']);
 $link = get_post($post_id);
 echo '/group/' . $link->post_name;
 wp_die();
 }
 

Для редактирования мы должны в ссылке передавать id поста, например » site.ru/edit?edit_id=241″

Далее мы с помощью  WP_Query или get_post получим данные для поста и вставим в поля.

Теперь нужен новый ajax запрос и php функция обновления которые делаются по аналогии, также js собираем данные, передаем в php и там обновляем функцией wp_update_post() вместо wp_insert_post()

Добавить Комментарий

Ваш ответ

Размещая свой ответ, вы соглашаетесь с правилами сайта.