从API数据填充ACF字段

时间:2019-04-09 11:37:21

标签: php ajax wordpress custom-taxonomy

我有一个API,希望以此填充网站上的选定字段。我可以对数据进行硬编码以提取分类数据,但是如果分类数据不存在,则需要创建它并填充选择字段。

用户将在自定义帖子类型-get_vehicle_data_cta的Wordpress后端中单击一个按钮,这将激活对功能get_vehicle_data的Wordpress AJAX请求。在此函数中,我获得了分类数据,然后将其返回。我想将此数据传递给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

0 个答案:

没有答案