art_karetnikov
@art_karetnikov
Лучший мой проект: Мобильный банк Сбербанка РФ.

Как сделать обновление текста в посте по нажатию кнопки?

Доброго.
Коллеги, я пытаюсь сделать некий аналог "афоризма дня" через плагин в вордпрессе. У меня есть текстовое сообщение и две кнопки "обновить" и "новое". Если обновить - то новый афоризм этого же автора, если "новый" - то рендомный автор и его афоризм. Выводить хочу в статью, предварять основной текст.

Есть функции - одна получает айди, вторая по нему текст. В случае "обновить" нужно вызвать функцию l_mrand_get() с уже имеющимся id, в случае "новое" - l_id_get() и l_mrand_get()
Третья функция l_show_result отвечает за вывод всего этого в пост по шорткату. При открытии/обновлении поста все работает, а нажатие кнопок не выходит.
То, что сейчас в коде - это попытка использовать аджакс, но... Что-то очень много всего там надо регистрировать, проверять и так далее. Ну и непонятно, что делать, если у зашедшего отключен JavaScript. А может и не аджакс надо?

Где еще можно задать подобный вопрос? Спрашивали уже в пяти местах, гробовое молчание.

function l_id_get() # назначается глобальный айди. Его потом можно либо еще раз получить новый, вызвав эту функцию, либо просто пользоваться уже полученным после одного вызова. 
{		 
   	global $m_wpdb; 
 	global $m_id;
 	$m_id = $m_wpdb->get_var($m_wpdb->prepare("call p_val_get;")); 
}
#
function l_mrand_get()  # получаю текст по id 
{		 
       global $m_wpdb;  
       global $m_id;
       global $m_text;
       $m_text = $m_wpdb->get_var($m_wpdb->prepare("call p_mrand_get ($m_id);"));
}

function l_show_result($content=null)
{		
	global $m_wpdb; 
	global $m_id;
	global $m_text;
	l_id_get();    # получу id 
	l_mrand_get(); # получу текст по данному id 
	$content .= "<div class='montage'><p>номер: $m_id, значение: $m_text</p></div>" ;
	$content .=  "<button type='button' onclick='l_refresh()'>Обновить</button>";
	$content .=  "<button type='button' onclick='l_new_get()'>Новый</button>";
	return $content;
}
  • Вопрос задан
  • 322 просмотра
Решения вопроса 2
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
Вешаете на кнопку вызов обработчика ajax

Тутор по Ajax в WP для чайников от Бена Маршала.
benmarshall.me/wordpress-ajax-frontend-backend/#aj...
Ответ написан
victorzadorozhnyy
@victorzadorozhnyy
если на чистом php то страницу уже не обновитьб, тут нужен ajax если не хочется с ним возиться, то обновите страницу. других вариантов для wp пока нет
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
PavelK
@PavelK
Сейчас крайне мало пользователей с отключённым аяксом, я последние года 3 вообще не парюсь по этому поводу, делаю запасной вариант только на крайне важных функциях, как то оформление заказа, добавить в корзину и тд.
В плагине с аяксом работать очень просто: https://codex.wordpress.org/AJAX_in_Plugins
В вашем случае как раз аякс более удобен, так как можно обновлять без перезагрузки страницы.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы