У меня есть API, который я надеюсь заполнить выбранные поля на веб-сайте. Я могу жестко закодировать данные, чтобы получить данные таксономии, однако, если данные таксономии отсутствуют, мне нужно создать их и заполнить поля выбора.
Пользователь нажимает кнопку в бэкэнде Wordpress для пользовательского типа записи - get_vehicle_data_cta
Это активирует запрос Wordpress AJAX к функции get_vehicle_data
. В рамках этой функции я получаю данные таксономии и затем возвращаю их. Я хочу передать эти данные в функцию get_vehicle_data_html
, чтобы затем использовать jQuery для добавления значений в поля выбора.
Скриншот можно посмотреть здесь - https://prnt.sc/n9jcfj
<?php
function get_vehicle_data_box() {
add_meta_box(
'get_vehicle_data_cta',
'Vehicle Data',
'get_vehicle_data_html',
'cars', /* the request post type */
'side',
'high'
);
}
add_action( 'add_meta_boxes', 'get_vehicle_data_box' );
add_action( 'wp_ajax_get_vehicle_data', 'get_vehicle_data' );
function get_vehicle_data() {
$car_make = get_terms(array(
'taxonomy' => 'car_make',
'hide_empty' => false));
foreach($car_make as $make) {
if($_COOKIE['make'] == $make->slug) {
$make_term = $make->term_id;
$make_name = $make->name;
}
}
wp_die("OK");
}
function get_vehicle_data_html() {
wp_nonce_field( 'request_send_post_details', 'request_cta_nonce' );
?>
<a href="#" id="btn-call-to-action" class="button button-primary widefat">Get Vehicle Data</a>
<script>
jQuery(function($){
$( "#get_vehicle_data_cta #btn-call-to-action" ).on("click", function(){
var nonce = $(this).parent().find("#request_cta_nonce").val();
$.post(
ajaxurl,
{
action: 'get_vehicle_data',
nonce: nonce
},
function( response ){
if ( 'OK' == response ) {
// API Values
var make = "vauxhall";
var model = "astra";
var trim = "hr-v";
var body_style = "mpv";
var transmission = "manual";
// Set API Values in Cookie
document.cookie = "make=" + make;
document.cookie = "model=" + model;
document.cookie = "trim=" + trim;
document.cookie = "body_style=" + body_style;
document.cookie = "transmission=" + transmission;
// Append values to the select fields
$('#acf-field_588f3b69b836f').append("<option value='<?php echo $make_term; ?>' selected><?php echo $make_name; ?></option>");
}
else {
alert( 'Something went wrong, try again' );
};
}
);
});
});
</script>
<?php
}
Проблемы, с которыми я сталкиваюсь:
- Передача переменных из одной функции в другую.
- Создание таксономии, если в функции
get_terms()
нет результатов, а затем присвоение значений переменным $make_term
и $make_name