Как я могу получить тот же результат ajax, используя WP REST API вместо admin-ajax? - PullRequest
0 голосов
/ 23 сентября 2018

Мне сказали, что admin-ajax сейчас устарел, и вместо этого лучше использовать REST API, но мне было интересно, как получить тот же результат этого кода, который генерирует кнопку со ссылкой на основе некоторых переменных и пользовательских полейиспользуя REST API?

также кто-то сказал мне, что этот код небезопасен, потому что я использую ответ HTML вместо данных в ajax, но мне интересно, как использовать данные для этого кода?

Я прошу прощения, но я все еще очень плохо знаком с кодированием

    <?php   

  add_action( 'woocommerce_before_add_to_cart_button', 'simple_amz_link_ajax', 10);


function simple_amz_link_ajax() {   
?>
<script>

jQuery(document).ready(function(){

             jQuery.ajax({
                url: "<?php echo admin_url('admin-ajax.php'); ?>",
                type: 'POST',
                data: {
                         action: 'getmyfunctionform1',
                         postId: <?php echo get_post()->ID; ?>
                },
                dataType: 'html',
                success: function(response) {

                jQuery("#buy_amz_btn_wrap").html(response);

                }

        }); 
    });
</script> 
<!-- end Ajax call to getmyfunctionform1 smc 11-22-2013 -->

<div id="buy_amz_btn_wrap"> Loading ... </div>

<?php
}

// Amazon Simple Button Function

add_action('wp_ajax_getmyfunctionform1', 'myfunctionform1');
add_action('wp_ajax_nopriv_getmyfunctionform1', 'myfunctionform1');

function myfunctionform1() { 
    $postId = filter_input( INPUT_POST, 'postId', FILTER_SANITIZE_NUMBER_INT );
    $country_code = $_SERVER ["HTTP_CF_IPCOUNTRY"];
    $de_asin = get_post_meta( $postId, "wccaf_de_asin", true );
    $uk_asin = get_post_meta( $postId, "wccaf_uk_asin", true );    

    $not_avilable_country = '<div id="amz_not_avilable" class="amz_not_avilable">This product is not avilable in your country yet</div>';


//////////////////////////////////////////////


if ($country_code=="DE" or $country_code=="DE") {
    $amazon_domain = 'https://www.amazon.de';
    $associate_id = 'bonstato-21';
    $asin = $de_asin;
}

else if ($country_code=="GB" && $uk_asin!=="") {
    $amazon_domain = 'https://www.amazon.co.uk';
    $associate_id = 'bonmedico-21';
    $asin = $uk_asin;
}

///////////////////

global $post;
        $product = wc_get_product( $postId );
        $type = $product->get_type();
        if( $type == 'simple' && $asin!="" ){   

                // Amazon Link For Mobile       
                ?>
                <script>
                    function amzGo(){
                        window.location='<?php echo $amazon_domain ?>/dp/<?php echo $asin ?>/?tag=<?php echo $associate_id ?>';
                }
                </script>
                <?php


        ?>
            <div class="buy_amz_btn_wrap" >  
                <button type="button" id="buy_amz_btn" class="buy_amz_btn" onclick="amzGo();"><i class="fa fa-amazon fa-amz"></i><?php echo $amz_btn_title ?></button>                           
            </div>
        <?php
        }

        else if( $type == 'simple' && $asin=="" ){   
            echo $not_avilable_country;
}


die(); 

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