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

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

    Ваш ответ

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