Вызов шорткода в JavaScript
3 сент. 2012 г., 20:27:48
Просмотры: 25.5K
Голосов: 4
Комментарии
Все ответы на вопрос
1
0
Код JavaScript выполняется в браузере пользователя, а не на вашем сервере (где находится ваш контент WordPress). Вы можете использовать AJAX для вызова функции, на которую указывает шорткод.
Вот как я обрабатываю AJAX-запросы в WordPress:
1) Использую jQuery AJAX для вызова wp-admin/ajax.php
jQuery.ajax({
url: yourSiteUrl + "/wp-admin/admin-ajax.php",
dataType: 'json',
data: {
'action':'your_ajax',
'fn':'run_shortcode_function',
'some_needed_value': jQuery('#input_for_needed_value').val()
},
success: function(results){
// делаем что-то с результатами шорткода в DOM
},
error: function(errorThrown){console.log(errorThrown);}
});// конец AJAX
2) Этот PHP-код размещается в файле functions.php вашей темы или в кастомном плагине:
// это WordPress AJAX, который работает как во фронтэнде, так и в админке
add_action('wp_ajax_nopriv_your_ajax', 'your_ajax_function');
add_action('wp_ajax_your_ajax', 'your_ajax_function');
function your_ajax_function(){
// первая часть - это "коммутатор", который запускает специфические функции в зависимости от значения Query Variable 'fn'
switch($_REQUEST['fn']){
case 'run_shortcode_function':
$output = your_ajax_shortcode_function($_REQUEST['some_needed_value']);
break;
case 'some_other_function_you_want_to_perform':
$output = some_other_function($_REQUEST['first_name'],$_REQUEST['last_name']);
break;
default:
$output = 'Функция не указана.';
break;
}
// в этой точке $output содержит данные, которые вы хотите вернуть
// Теперь конвертируем $output в JSON и выводим в браузер
// Так мы сможем перехватить его jQuery и выполнить success-функцию
$output=json_encode($output);
if(is_array($output)){
print_r($output);
}
else{
echo $output;
}
die;
}
function your_ajax_shortcode_function($some_needed_value){
return the_specific_function_that_the_shortcode_was_pointing_to($some_needed_value);
}
Надеюсь, это направит вас в нужном направлении.

Douglas.Sesar
1.37K
4 сент. 2012 г. 03:22:04
Похожие вопросы
2
ответов