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

时间:2018-09-21 作者:Islam Mohamed

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

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

 <?php

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 个回复
SO网友:Gray

页面缓存生成页面的静态HTML版本,因此IP地理位置在第一次渲染时发生,在后续渲染时不会触发-您的用例与W3 Total Cache的页面缓存不兼容。

您可以通过页面缓存来完成您想要完成的任务,但是,您需要编写自己的缓存实现来检查访问者地理位置cookie或$_GET 参数,根据其值的内容为不同的静态HTML文档提供服务(远远超出任何简单编码的范围)。

结束

相关推荐

如果我对页面使用静态页面-slug.php,数据库是否仍被查询?

我想知道如何显示静态页面以稍微增加页面负载:第一个选项是将内容放入数据库(通过管理GUI),第二个选项是创建page-slug.php 不调用内部的循环page-slug.php. 如果仍在查询数据库,则后一个选项将无效,这将导致我的问题在页面加载方面使用page-slug.php 对于静态页面,而不是将内容放入数据库</如果我使用page-slug.php (使用循环)以检查此页面是否有任何内容

如何防止这些PHP变量被缓存到WordPress上? - 小码农CODE - 行之有效找到问题解决它

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

时间:2018-09-21 作者:Islam Mohamed

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

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

 <?php

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 个回复
SO网友:Gray

页面缓存生成页面的静态HTML版本,因此IP地理位置在第一次渲染时发生,在后续渲染时不会触发-您的用例与W3 Total Cache的页面缓存不兼容。

您可以通过页面缓存来完成您想要完成的任务,但是,您需要编写自己的缓存实现来检查访问者地理位置cookie或$_GET 参数,根据其值的内容为不同的静态HTML文档提供服务(远远超出任何简单编码的范围)。

相关推荐

自定义模板earch.php中的搜索结果

现在我在搜索结果页面(search.php)中遇到了一个问题,结果是由索引页面模板显示的,而不是它的模板,它显示所有帖子,不管搜索者是否输入了内容我的索引。php页面<?php get_header(); ?> <?php $search = $_get[\'search\']; $args = array( \'post_title_like\' => $search ); $res = new wp_query($args