Заполните поля ACF из данных API - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть 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
}

Проблемы, с которыми я сталкиваюсь:

  1. Передача переменных из одной функции в другую.
  2. Создание таксономии, если в функции get_terms() нет результатов, а затем присвоение значений переменным $make_term и $make_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...