WordPress:防止缓存get_query_var()

时间:2017-11-16 15:49:43

标签: wordpress caching

我在PHP中有以下插件代码:

function getHotels() {
    if(get_query_var('htl_destination') !== null) {
        $url = "http://xmlfeed.laterooms.com/index.aspx?aid=100&rtype=4&kword=".get_query_var('htl_destination')."&sdate=".get_query_var('htl_start_date')."&nights=".get_query_var('htl_nights')."";
        $data = file_get_contents($url);

        $xml = simplexml_load_string($data) or die("Error cannot create object");
        foreach($xml->hotel as $hotel) {
            echo 
            "<div class='panel'>
                <div>
                    <img class='img-left' src='{$hotel->images}'></img>
                    <div class='price'>
                        <p>Prices from</p>
                        <h1>£".str_replace(".0", "", $hotel->prices_from)."</h1>
                        <a href='#' class='view-now'>View now</a>
                    </div>
                    <div class='info'>
                        <h1>{$hotel->hotel_name}</h1>";
                        for($i=0; $hotel->hotel_star > $i; $i++) {
                            echo "<i>&#9733;</i>";
                        }
                        echo "
                        <p>{$hotel->hotel_address}</p>
                    </div>
                </div>
            </div>";
        }
    } else {
        echo "<p>No results</p>";
        print_r($_POST);
    }
}

HTML:

<form method="get" action="">
    <input style="margin-left: 0% width: 25%" class="form-control htl_filter" type="text" name="htl_destination" placeholder="Destination" required>
    <input style="margin-left: 0%" class="form-control htl_filter" type="date" name="htl_start_date" placeholder="Date" required>
    <div class="htl_filter" style="margin-left: 0%;">
        <select name="htl_nights" required>
            <option value="1">1 Night</option>
            <?php 
                for ($i=2; $i < 29; $i++) {
                    echo "<option value={$i}>{$i} Nights</option>";
                }
            ?>
        </select>
    </div>
    <button style="width: 15%;" type="submit">Search</button>
</form>

当表单提交到下一页时,查询变量会被缓存,因此结果不会改变。

我们在我们的网站上安装了siteground缓存插件,结果在我点击“清除SG缓存”之前不会改变。

我尝试将我的插件所在页面的网址添加到网站地址缓存插件排除列表中,但没有成功。

有没有办法阻止变量被缓存?

1 个答案:

答案 0 :(得分:0)

当我尝试停用SG缓存插件时,可能没有区别,因为服务器正在缓存网页。但是有一个函数可以被调用来清除缓存,所以我已经将它添加到我的getHotels()函数中,现在代码可以正常工作。

功能是

if (function_exists('sg_cachepress_purge_cache')) {
    sg_cachepress_purge_cache();
}