trakhtenberg
@trakhtenberg

Как из vue.js выполнить скрипт Wordpress, чтобы vue.js отреагировал на результат?

Делаю плагин для wordpress, форма на однофайловом компоненте vue.js 2 (я еще не так силен в vue для продвинутого уровня, vuex npm и прочие сложности не разворачивал).

По замыслу пользователь на странице (сгенерированной vue) заполняет форму отзыва, после чего скрипт проверяет, залогинен ли пользователь в wordpress - и в зависимости от результата должен выполнять действия.
Результат сторона Wordpress возвращает в response, в зависимости от значения response['code'] и должен произойти выбор действий.

Итак, по кнопке Submit вызывается вот такой код (в секции methods компонента):
checkWPLogin () {
			let data = {
				action: 'is_wp_logged',
				security: ajax_php_vars.nonce,
			}
			$.ajax({
				method: 'get',
				url: ajax_php_vars.ajax_url,
				action: 'is_wp_logged',
				data: data,
				success: function(data) {
					response = data;
				},
				error: function(err) {
					console.log(err);
				}
			})
		},


Эта конструкция работает, но ожидаемо асинхронно. Причем пространство имен у нее, к сожалению, не совпадает с моим vue - то есть, когда я ставлю точку остановки на успешную ветку, на response= data; - переменные vue не видны - то есть я не могу ничего оттуда передать.

По сути мне не надо асинхронность, если есть вариант, как get и post запросы к wordpress сделать без ajax и асинхронности, я только ЗА.

Думал в сторону axios - вроде бы он более дружественен с vue.js, но не могу найти в документации, как указать не просто URL, но конкретный скрипт в коде (как для ajax у меня это указано в action). То есть для стороннего сервера все понятно, я знаю и как прочитать, и как отправить запросы.. но вот попасть внутрь кода на WP с помощью axios не знаю как.
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
trakhtenberg
@trakhtenberg Автор вопроса
Собственно, данную конкретную задачу я решил.
Вот откорректированный код, который работает (как ни странно :) )
async checkWPLogin () {
			let data = {
				action: 'is_wp_logged',
				security: ajax_php_vars.nonce,
			}
			const { answer } = await $.ajax({
				method: 'get',
				url: ajax_php_vars.ajax_url,
				action: 'is_wp_logged',
				data: data,
				success: function(data) {
					response = JSON.parse(data);
				},
				error: function(err) {
					console.log(err);
				}
			});
			this.wp_user_status = Number( response['code'] )
			if ( this.wp_user_status != 200 ) {
				this.checkFBLogin()
			} else {
				this.fb_dialog_stage = 0
				this.addReview()
			}
		}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
импортируй в нужное пространство имен в чем проблема? зачем вообще тебе вызывать данный метод если он ничего кроме отправки запроса не делает? запрос ты и из своего компонента сделать можешь
Ответ написан
Ваш ответ на вопрос

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

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