Вызов шорткода в JavaScript

3 сент. 2012 г., 20:27:48
Просмотры: 25.5K
Голосов: 4

Я хочу отобразить шорткод через jQuery после загрузки DOM:

Вот как я вызываю шорткод: <?php echo do_shortcode('[plugin]'); ?>

Теперь мой вопрос в том, как я могу вызвать этот шорткод внутри функции jQuery, поскольку мой сайт основан на вызовах jQuery/Ajax? Спасибо!

1
Комментарии

Пожалуйста, воспользуйтесь поиском по сайту. Вы используете _doing_it_wrong(). Нет необходимости вызывать шорткод - просто вызовите базовые функции/колбэки AJAX или обратитесь к локализованному объекту (если таковой имеется в готовом виде).

kaiser kaiser
3 сент. 2012 г. 20:46:36
Все ответы на вопрос 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);
}   

Надеюсь, это направит вас в нужном направлении.

4 сент. 2012 г. 03:22:04