Что подключить для использования wp_insert_post?

Здравствуйте, хочу создать форму обратной связи, которая будет отправлять результаты на email и записывать в нужную рубрику.
Создал в корне ajax/web_form.php. В файле разместил
$source = array(
    'post_title' => 'Заголовок поста.',              // - заголовок материала.
    'post_name' => 'zagolovok-posta',                // - "слаг", синоним пути.
    'post_excerpt' => 'Цитата поста.',               // - цитата, анонс.
    'post_content' => '<p>Содержимое поста.</p>',    // - содержимое/контент.
    'post_status' => 'publish',                      // - статус материала: опубликованный.
    'post_author' => 1,                              // - автор материала: пользователь с id=1 (администратор).
    'post_type' => 'post',                           // - тип контента: запись.
    'post_category' => array( 11),               // - рубрики.
    'tags_input' => 'Добавление постов, WordPress',  // - метки/теги.
    'comment_status' => 'open'                       // - комментирование разрешить.
);

# Вставка записи в базу данных:
echo wp_insert_post($source);

начало ругаться что нету функции wp_insert_post, подключил wp-includes/post.php., начало ругаться user_id или чет такое.
Вопрос следующий,что нужно подключить чтобы можно было использоваться функции и методы wp в файлах.
  • Вопрос задан
  • 417 просмотров
Решения вопроса 2
@cema93
WordPress разработчик
Надо подключить всего один файл
require($_SERVER[‘DOCUMENT_ROOT’].’/wp-load.php’);
Ответ написан
rOOse
@rOOse
Frontend developer
Не надо так делать. Для аякса у ВП есть специальные штуки, делается так(упрощенно), в functions.php:
add_action('wp_ajax_sendmail', 'sendmail_callback');
add_action('wp_ajax_nopriv_sendmail', 'sendmail_callback');
function sendmail_callback() {
  $data = $_POST; //тут у нас все данные отправленные js скриптом
  //отсылаем почту, создаем запись и т.д.
}

В js(jquery):
var data = {
  action: 'sendmail',
  //mail, имя или другие поля к примеру 
  mail: jQuery("#mail").val()
};
jQuery.post('/wp-admin/admin-ajax.php', data, function(response) {
//получаем ответ, делаем что надо или выводим ошибку
}, "json");


Если возвращает 0, то попробуйте установить $wp_error в true, т.е. echo wp_insert_post($source, true); и посмотреть какую ошибку возвращает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы