如何防止这些PHP变量在WordPress上缓存?

时间:2018-09-20 23:15:33

标签: javascript php ajax wordpress woocommerce

我正在WordPress上的functions.php中使用此代码来基于访问者的位置生成一个会员链接,它工作正常,但问题是如果打开页面缓存(W3 Total Cache),变量将被缓存因此,如果来自英国的人是第一个打开该页面的人,那么来自德国的第二个打开了页面,他将获得与第一个访问者相同的链接。

请再做一件事,我对PHP和javascript还是很陌生,所以如果答案足够简单,我将不胜感激

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

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

    // IP Geolocation   
    $country_code = $_SERVER ["HTTP_CF_IPCOUNTRY"];
    // Get Custom Fields
    $de_asin = get_post_meta(get_post()->ID, "wccaf_de_asin", true );
    $uk_asin = get_post_meta(get_post()->ID, "wccaf_uk_asin", true );

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

    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;
    }

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

    if( wp_is_mobile() ) {

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

    } else {

    // Amazon Link For PC
    ?>
    <script>
    function amzGo(){
        window.location='<?php echo $amazon_domain ?>/gp/aws/cart/add.html?AssociateTag=<?php echo $associate_id ?>&ASIN.1=<?php echo $asin ?>&Quantity.1=1';
    }
    </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
}

1 个答案:

答案 0 :(得分:0)

不确定是否可以使用,但是您可以尝试为变量和时间戳设置一些初始值,然后使用if语句检查当前时间戳是否大于初始时间戳,并在{}内设置变量。