Добрый вечер,
Пишу функционал редактирования контента wordpress с фронт-енда и столкнулся с проблемой.
Вкратце:
Получаю введённые пользователем данные и AJAX запросом отправляю в PHP функцию:
$(document).on('click', '#edit', function(e) {
e.preventDefault();
var id = $('#edit').data('lyrics-id');
var Title = $('.editable').eq(0).text();
var Content = $('.editable').eq(1).text();
console.log(Title);
console.log(Content);
if( Title !== '' && Content !== '') {
$.ajax({
type: 'POST',
data: { 'action': 'edit', 'title': Title, 'content': Content, 'id': id },
url: '/wp-admin/admin-ajax.php',
success: function(data, textStatus, XMLHttpRequest) {
alert(data);
}
});
} else {
alert('Please enter title and content');
}
});
Там принимаю и отдаю функции:
add_action('wp_ajax_edit', 'editlyrics_ajax_handler' );
function editlyrics_ajax_handler() {
if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
$id = $_POST['id'];
$post_title = $_POST['title'];
$post_content = $_POST['content'];
//var_dump($post_title);
//var_dump($post_content);
$args = array();
$args['ID'] = $id;
$args['post_title'] = $post_title; //если задать статичные данные,
$args['post_content'] = $post_content; //то всё работает
$result = wp_update_post( $args, true );
if (is_wp_error($result)) {
$errors = $result->get_error_messages();
foreach ($errors as $error) {
echo $error;
}
} else {
echo $result;
}
}
die();
}
Функция-обработчик их получает. На первый взгляд это самый обычный текст, но что-то с ним не так, т.к. когда я скармливаю эти переменные функции wp_update_post(), то на сервер приходят пустые данные, вернее сказать в итоге получаются пустые поля в бд.
Если вместо переменных задать статичные данные, всё ок.
В чём дело? Нужно как-то обработать этот текст?
П.С. Добавил код