gpt4 book ai didi

php - 使用 WordPress Super Cache 从缓存中排除动态值

转载 作者:行者123 更新时间:2023-12-01 03:31:57 32 4
gpt4 key购买 nike

我正在使用 super 缓存插件。

有一段时间我一直在寻找解决方案,但没有成功。我需要禁用文件 functions.php 中一个函数的缓存。

add_shortcode('custom_counter', 'example_shortcode');
function example_shortcode() {
// Get custom counter option value
$counter = get_option( 'wc-custom-counter' );
return '<span class="custom-counter">' . $counter . ' rub.</span>';
}

这是在创建的自定义页面上使用的短代码。此短代码输出的数据必须不落入页面缓存。

最佳答案

改编自this old WSE thread ,您将在下面找到使其工作的完整方法。

这里我们显示一个微调器加载图标 enter image description here将通过 ajax 替换为计数器实际非缓存值。即使在缓存页面中,Javascript 也始终保持事件状态,因此它可以通过 Ajax 或任何检测到的事件更改页面上所需的任何内容。因此,插件设置中无需排除任何内容

替换代码:

// The shortcode
add_shortcode('custom_counter', 'customer_counter_shortcode');
function customer_counter_shortcode() {
// Start buffering
ob_start();

// Using woocommerce existing animated spinner gif icon
$loading_url = home_url( '/wp-content/plugins/woocommerce/assets/images/select2-spinner.gif' );

// Displaying a "Loading spinner icon + text to be replaced by Ajax value
echo '<span class="custom-counter">
<img id="loading-img" src="'.$loading_url.'" alt="Loading..." style="opacity:0.5; display:inline-block; vertical-align: middle;" />
<span style="opacity:0.5;"> ' . _("loading…") . '</span>
</span>';
?>
<script type="text/javascript">
jQuery( function($){
if (typeof woocommerce_params === 'undefined')
return false;

$.ajax({
type: 'POST',
url: woocommerce_params.ajax_url,
data: {
'action': 'custom_counter',
'custom-counter': true,
},
success: function (result) {
$('.custom-counter').text(result);
console.log('response: '+result); // just for testing | TO BE REMOVED
},
error: function(error){
console.log(error); // just for testing | TO BE REMOVED
}
});
});
</script>
<?php
return ob_get_clean(); // Return the buffered code
}

// The wordpress ajax hooked function (for logged in and non logged users)
add_action('wp_ajax_custom_counter', 'ajax_custom_counter');
add_action('wp_ajax_nopriv_custom_counter', 'ajax_custom_counter');
function ajax_custom_counter() {
if( isset($_POST['custom-counter']) && $_POST['custom-counter'] )
echo get_option( 'wc-custom-counter' ); // Get option value

exit();
}

代码位于事件子主题(或事件主题)的 function.php 文件中。经过测试并有效。

关于php - 使用 WordPress Super Cache 从缓存中排除动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51322339/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com