You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress插件短码输出每次刷新页面重复显示的问题求助

WordPress插件短码输出每次刷新页面重复显示的问题求助

我正在开发一个简单的WordPress插件,功能是从外部API获取随机名言,然后通过短码展示出来。但现在遇到个头疼的问题:每次刷新页面,名言都会重复显示——同一个容器里会出现两次(甚至更多)名言。我本来预期每次页面加载只显示一条名言的。

以下是我简化后的插件代码:

function my_quotes_shortcode() {
    $response = wp_remote_get('https://api.quotable.io/random');
    if (is_wp_error($response)) {
        return 'Quote unavailable.';
    }
    $data = json_decode(wp_remote_retrieve_body($response));
    $quote = $data->content ?? 'Default quote';
    $author = $data->author ?? 'Unknown';
    return "<div class='quote-box'>\"{$quote}\" - {$author}</div>";
}
add_shortcode('daily_quote', 'my_quotes_shortcode');

我尝试过的解决方法

  • 把返回内容用ob_start()/ob_get_clean()包裹——没有任何变化
  • 确保add_shortcode()只调用一次,并且放在所有钩子外部
  • 清除了浏览器缓存、站点缓存和服务器缓存
  • 切换到默认的Twenty Twenty-Four主题——问题依然存在

预期效果

我预期每次页面加载时,短码都会返回一个包含单条名言的<div>容器,不会出现重复显示的情况。

补充说明

  • 我没有引入任何自定义的JavaScript或CSS
  • 是通过WordPress编辑器在基础页面块中使用这个短码的
  • 快速刷新页面时,重复出现的概率更高
  • 这会不会和WordPress处理短码渲染的方式有关?还是API请求的时序问题?求各位大佬帮忙解答!

更新:重复问题的原因是在某些Gutenberg区块场景下,短码会被多次执行。根据下面的回答提示,我在短码函数内部使用了静态变量,问题就解决了!感谢大家的帮助!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 12:03:04