Мне сказали, что 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();
}
?>