Как передать переменную php в обработчик wordpress AJAX - PullRequest
0 голосов
/ 23 ноября 2018

Попытка передать некоторые переменные php в мою функцию-обработчик ajax в functions.php

Пример, приведенный ниже, не работает, возможно, как-то связан с хуками, но я не могу найти какую-либо информацию окак это сделать:

/*Unsubscribe*/
$test_variable = "derp";

function user_unsubscribe($test_variable){
  echo json_encode($test_variable);
  wp_die();
};

add_action('wp_ajax_user_unsubscribe', 'user_unsubscribe');
add_action('wp_ajax_nopriv_user_unsubscribe', 'user_unsubscribe');

Ответы [ 3 ]

0 голосов
/ 23 ноября 2018

Решено с помощью этого решения: могу ли я передать аргументы своей функции через add_action?

Рабочее решение кода:

/*Unsubscribe*/
$test_variable = "derp";

function user_unsubscribe($test_variable){
  echo json_encode($test_variable);
  wp_die();
};

add_action('wp_ajax_user_unsubscribe', function() use ($test_variable){
  user_unsubscribe($test_variable);
});

add_action('wp_ajax_nopriv_user_unsubscribe', function() use ($test_variable){
  user_unsubscribe($test_variable);
});
0 голосов
/ 23 ноября 2018

Вы можете передать эту переменную PHP в ajax-данных.Пожалуйста, проверьте файлы ниже, в которых я отправил значение «test_variable» в функцию Ajax из jQuery.

Код файла Jquery

jQuery(document).ready(function($) {    
    $('#btn').on('click',function(){
      $.ajax({ 
           data: {action: 'get_listing_names','test': global.test_variable},
           type: 'post',
           url: global.ajax,
           success: function(data) {
            console.log(data);
          }
      });
    });
});

Код файла Functions.php.

<?php
/**
 * Enqueue scripts and styles.
 *
 * @since 1.0.0
 */
function ja_global_enqueues() {

    wp_enqueue_script(
        'global',
        get_template_directory_uri() . '/js/global.js',
        array( 'jquery' ),
        '1.0.0',
        true
    );
    wp_localize_script(
        'global',
        'global',
        array(
            'ajax' => admin_url( 'admin-ajax.php' ),
            'test_variable' => 'Test Value',
        )
    );
}
add_action( 'wp_enqueue_scripts', 'ja_global_enqueues' );


add_action('wp_ajax_nopriv_get_listing_names', 'ajax_listings');
add_action('wp_ajax_get_listing_names', 'ajax_listings');


function ajax_listings() {

    $test_variable = $_POST['test_variable'];


    wp_send_json_success( $test_variable );        

}
0 голосов
/ 23 ноября 2018

Предпочтительным способом передачи переменных в ajax является добавление их в запрос и чтение их из $_GET или $_POST официальной документации

Если вам нужны другие переменные, вы 'Вам придется либо использовать globals , либо вызвать дополнительную функцию.

favourite

Пытаться передать некоторые переменные php в мою функцию-обработчик ajax в functions.php

Пример, приведенный ниже, не работает, возможно, что-то связано с крючками, но я не могу найти информацию о том, как это сделать:

function user_unsubscribe(){
  $test_variable = get_test_variable();

  echo json_encode($test_variable);
  wp_die();
};

add_action('wp_ajax_user_unsubscribe', 'user_unsubscribe');
add_action('wp_ajax_nopriv_user_unsubscribe', 'user_unsubscribe');

function get_test_variable() {
    // here get/fetch your variable;

    /*Unsubscribe*/
    $test_variable = "derp";

    return $test_variable;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...