Вывод редактирования/создания поста на 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()