Задать вопрос
like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей

Почему приходят пустые данные на сервер?

Добрый вечер,
Пишу функционал редактирования контента 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(), то на сервер приходят пустые данные, вернее сказать в итоге получаются пустые поля в бд.
Если вместо переменных задать статичные данные, всё ок.
В чём дело? Нужно как-то обработать этот текст?

П.С. Добавил код
  • Вопрос задан
  • 484 просмотра
Подписаться 3 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
like-a-boss
@like-a-boss Автор вопроса
Признайся,тебяТянетНаКодМужика,ты—программный гей
Код рабочий. Вопрос решён
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
console.log(Title); и console.log(Content) в студию.
Какой функцией отправляете ajax и как? Тоже укажите.
Вероятно, что какой-нибудь токен надо передавать тоже, который генерирует вордпресс, это где-то передается?
Ответ написан
@Centrino
А какие статические данные вы указываете?
Нормально ли ест обновление поста данными на 894 строку?
Перехват ошибок при выполнение функции?
Ответ написан
sivabur
@sivabur
Заблокировали просто так!
$result = wp_update_post( $_POST, true ); -напишите так.

die();-попробуйте убрать

$args = array();
            $args['ID'] = $id;
            $args['post_title'] = $post_title; //если задать статичные данные,
            $args['post_content'] = $post_content; //то всё работает

Это также неплохой вариант если не считать лишнего создания перегонка массива.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽