在 WordPress 中缓存自定义社交分享计数

2023-12-31

我真的很喜欢有一个股票柜台在我的博客文章上。我注意到它实际上鼓励访问者自己分享内容。因为没有真正令我满意的 WordPress sharecount 插件(其中大多数都需要大量调用),所以我自己编写了代码。

它工作完美,但仍然减慢了我的网站速度。所以我宁愿它每小时缓存和刷新一次或者。我不知道如何处理这个问题……有什么想法吗?

这是我在主题函数文件中放入的内容:

class shareCount {
private $url,$timeout;
function __construct($url,$timeout=10) {
$this->url=rawurlencode($url);
$this->timeout=$timeout;
}

function get_tweets() { 
$json_string = $this->file_get_contents_curl('http://urls.api.twitter.com/1/urls/count.json?url=' . $this->url);
$json = json_decode($json_string, true);
return isset($json['count'])?intval($json['count']):0;
}

function get_fb() {
$json_string = $this->file_get_contents_curl('http://api.facebook.com/restserver.php?method=links.getStats&format=json&urls='.$this->url);
$json = json_decode($json_string, true);
return isset($json[0]['total_count'])?intval($json[0]['total_count']):0;
}

private function file_get_contents_curl($url){
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);
$cont = curl_exec($ch);
if(curl_error($ch))
    {
        die(curl_error($ch));
    }
        return $cont;
    }

}

这就是我在 single.php 中使用的:

<!-- Begin mod: Add share counter -->
<span class="share-count">
    <?php 
    $obj=new shareCount(get_permalink( $post->ID ));  
    echo $obj->get_tweets() + $obj->get_fb();
    ?>
</span>
<span class="share-text">
    keer gedeeld
</span>
<!-- End mod: Add share counter -->

然后我还添加一些CSS。


就像维森特所说,你应该使用内置的瞬态缓存。

private function file_get_contents_curl($url){
    // Create unique transient key
    $transientKey = 'sc_' + md5($url);

    // Check cache
    $cache = get_transient($transientKey); 
    if($cache) {
        return $cache;
    }

    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);
    $cont = curl_exec($ch);
    if(curl_error($ch))
    {
        die(curl_error($ch));
    }

    // Cache results for 1 hour
    set_transient($transientKey, $cont, 60*60);

    return $cont;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 WordPress 中缓存自定义社交分享计数 的相关文章

  • PHP 类似数组的对象

    我需要能够像这样设置我的对象 obj gt foo bar 然后我需要将它用作数组 如下所示 if obj foo bar more code here 只需添加implements ArrayAccess到您的类并添加所需的方法 公共函数
  • UTF-8、PHP 和 XML Mysql

    我在解决这个问题时遇到了很大的问题 我有一个编码 latin1 swedish ci 的 mysql 数据库和一个存储名称和地址的表 我正在尝试输出 UTF 8 XML 文件 但在使用以下字符串时遇到问题 Otiv gen它被输出为Otiv
  • MySQL 启动错误 - 根元素丢失

    我在 Windows Server 2003 R2 上安装 MySQL 大约两个月了 启动时 我们会看到一个错误 显示 高严重性错误 根元素丢失 然后是另一个高严重性错误 显示 在调用 WriteToLog 方法之前必须定义日志文件路径 任
  • 在 PHP cURL 中设置 FTP 模式

    我有一些代码使用 PHP cURL 库通过 FTP 上传一些文件 我被告知将 FTP 模式从被动切换为主动 但我找不到如何做到这一点 相关文档中似乎没有选项 我实际上不确定它当前使用的是什么模式 或者我如何查看它 这个问题的答案是使用 cu
  • 使用 Laravel 返回一对多 Eloquent 关系中的最后一条记录

    假设存在一个One To Many关系 其中用户有许多工作 以及最后一条记录job表是用户当前的作业 让用户返回上一份工作的更好方法是什么 这是我尝试过的 User Class public function ejob return thi
  • 为什么 PHP 字符串连接运算符是点 (.)? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将结果从 pdo 发送到 ajax 时遇到问题

    我想做的是 如果用户成功注册 pdo 将提供信息并将其发送到 ajax 如果用户注册与否 ajax 将发送消息 在我将这个条件放入我的 pdo 中后 它工作正常 现在它不会再插入 并且 ajax 告诉 注册用户时出错 每时每刻 script
  • 如何使用 PHP 向用户发送每日电子邮件通知?

    我有一个简单的用户注册表单 其中有一个复选框 如果用户的任何项目有活动 用户可以每天收到电子邮件通知 就像 Stack Overflow 有一个 通知 电子邮件受保护 cdn cgi l email protection每天都有新的答案 我
  • 根据注册后的时间自动删除Wordpress用户?

    在使用用户访问管理器的基本 WordPress 3 1 设置中 是否可以自动删除 x 天前的用户 我没有找到此功能的插件 人们将如何实施这一举措 我是否能够使用 sql 或 php 查询设置一个 cron 作业 从而每天自动从数据库中删除
  • 如何在 php 和 mongodb 中使用 findAndModify

    我想将 id 加 1 但运行 php 页面时出现问题 错误是 Fatal error Call to undefined method MongoCollection findAndModify in C wamp www 我的代码是
  • PHP 的 Dom Node 查找 href 属性问题

    我正在尝试使用 php domDocument 从某些数据的 url 中提取 href 以下拉动网址的锚点 但我想要网址 events i race 1 trim cols gt item 1 gt nodeValue 如果有帮助的话 这里
  • 如何获取wordpress中文件的本地路径

    由于在wordpress中 上传的文件 图像以3种不同的大小存储 从而占用内存 我有一个代码可以根据给定图像的 URL 来调整图像的大小 调整大小的代码是 img wp get image editor image url if is wp
  • 导出具有高质量图像的画布的最佳实践是什么?

    我需要你的帮助 我解释一下我的情况 我正在使用 Fabric js 库在我的应用程序中放置形状 文本等 我的画布尺寸为 1000x1000 像素 约 26 45x26 45 厘米 我有一个图像上传脚本 仅用于上传高质量图像 例如 300 d
  • 高级自定义字段 - WordPress

    在使用时自定义字段插件 我无法让它返回任何数据 我创建了一个名为的字段组book cover thumbnail其中有一篇文章链接到它 谁能明白为什么下面的代码不起作用 img src 我完全没有收到任何错误 没有空格 确保您 a 使用以下
  • WordPress 联系表 7 日期选择器更改日期格式

    我在用着Contact Form 7WordPress 中的插件 我需要一些帮助datepicker关于如何更改我的表单前端的显示日期格式 默认显示mm dd yy我想把它改成dd mm yy但不幸的是我无法使用这段代码 dateForma
  • Doctrine QueryBuilder 重用部件

    我想计算所有符合我的条件的字段 并使用学说查询生成器逐页获取它们 我生成的查询取决于我的过滤器字段 第一部分是计算记录 以便我可以计算页数 qb em gt createQueryBuilder qb gt select COUNT m i
  • 如何编辑 Woocommerce 单一产品元模板中显示的内容?

    我正在为客户做一些工作并使用 wordpress woocommerce 他们要求我将类别移动到我已经完成的单个产品页面上的产品名称下 但他们不希望它打印 类别 类别 1 类别 2 等 他们希望删除 类别 并且它实际上只列出类别的名称 而不
  • empty() 在对象的非空属性上返回 TRUE

    我遇到了一个非常奇怪且意想不到的问题 empty 正在返回TRUE由于我不知道的原因 在一处非空的房产上 class MyObject private property public function construct property
  • 如何将十进制转换为二进制并将其位值恢复到数组中?

    例如 result func 14 The result应该 array 1 1 1 0 如何实施func decbin http docs php net decbin会产生一个字符串二进制字符串 echo decbin 14 outpu
  • File_get_contents($url): 无法打开流

    我有一个脚本 我使用以下方法读取文件 file get contents urlencode url 我收到此错误 failed to open stream HTTP request failed HTTP 1 0 400 Bad req

随机推荐

  • 我从 C 函数读取嵌套 lua 表作为参数是否正确?

    我将用C语言实现一个函数 该函数将由Lua脚本调用 这个函数应该接收一个lua表 甚至包含一个数组 作为参数 所以我应该读取表中的字段 我尝试像下面那样做 但是当我运行它时我的函数崩溃了 谁能帮我找出问题所在吗 function findI
  • Fedora 24 上的 libicu 和 stringi 导致 R 头痛

    我最近升级到 F24 现在在我的 R 会话中我无法加载一些包 sp reshape2 latex2exp knitr 等 我发现的最初问题是 F24 使用 libicu56 而这些软件包需要 libicu54 我遵循了一个建议这个线程 ht
  • 如何以编程方式更改 Chrome 中地址栏的字体大小

    我想以编程方式更改 Chrome 中地址栏的字体大小 因为它对我来说太大了 有什么办法可以做到这一点吗 通常 地址栏的字体大小由操作系统的默认字体大小决定 在这里阅读评论 https code google com p chromium i
  • 如何在 Java 中将十六进制字符串转换为字节值

    我有一个字符串数组 我想将它转换为字节数组 我使用Java程序 例如 String str aa 55 转换成 byte new byte 0xaa byte 0x55 我能做些什么 String str Your string byte
  • 通过ParentProcessID杀死进程

    我想通过其 ParentProcessID 终止正在运行的进程 我想像您在命令行中一样执行此操作 wmic process where parentprocessid 3008 terminate 但现在的问题是 在 PowerShell
  • 仪表 D3,显示值位置

    我正在尝试使用一些现成的 JavaScript 来制作仪表 我快到了 但我不知道如何管理值标题 Here is how my code works now And this is how I like it to work 不知道如何处理问
  • 在 Apache Spark (Scala) 中使用 reduceByKey

    我有一个类型为 用户 ID 名称 计数 的元组列表 例如 val x sc parallelize List a b 1 a b 1 c b 1 a d 1 我试图将这个集合简化为一种类型 其中每个 元素名称被计算在内 所以上面的 val
  • 在 Ruby 脚本中重定向 stdout 时出现问题

    我有以下测试 Ruby 脚本 require tempfile tempfile Tempfile new test stderr reopen tempfile stdout reopen tempfile puts test stdou
  • 使用特殊字符的 PHP 变量/函数/类名称

    我理解下划线 是命名变量 函数 类等的可接受字符 但是我想知道是否还有其他可以使用的特殊字符 我测试了一些 但没有运气 并且很长一段时间以来一直假设没有 但我想我会看看是否有其他人确切知道 这主要是出于美观的目的 但是我想在与其他开发人员合
  • 更新列表中的子项会更新 C# 中的所有项

    这是我的清单 public class PayRateDaysModel public string day name get set public List
  • 计算字段上的 SSRS 聚合

    我正在尝试对 SSRS 中的计算字段执行聚合 但收到以下错误 rsAggregateReportItemInBody textrun Textbox43 Paragraphs 0 TextRuns 0 的值表达式在报表项上使用聚合函数 聚合
  • Flask request.remote_addr 在 webfaction 上是错误的并且没有显示真实用户 IP

    我刚刚在 Webfaction 上部署了一个 Flask 应用程序 我注意到request remote addr总是127 0 0 1 这当然没有多大用处 如何在 Webfaction 上的 Flask 中获取用户的真实 IP 地址 Th
  • Firestore 文档的最大字段数?

    现在我有一个products我将产品存储为如下文档的集合 文档ID title STRING price NUMBER images ARRAY OF OBJECTS userImages ARRAY OF OBJECTS thumbnai
  • 未找到映射器类

    有时我的 MR 工作会抱怨找不到 MyMapper 类 我必须给 job setJarByClass MyMapper class 告诉它从我的 jar 文件加载它 cloudera cloudera vm tmp translator h
  • dmidecode 的 C/C++ API

    dmidecode列出了各种硬件参数 包括实际安装的 DRAM 模块的尺寸 型号和序列号 不使用system 并解析输出文本 是否有一个编程接口可以通过 C C 获取相同的信息 例如 dmidecode type 17 dmidecode
  • 在用户定义函数中创建、删除和插入临时表

    我正在尝试根据我的要求创建一个函数 但是 什么时候创建或删除 tempTable 它给出的错误为 在函数中无效使用副作用运算符 删除对象 我的理解是我们不能拥有create drop or insert操作于 temptable在一个函数中
  • 如何在iOS自动布局中动态更改字体大小?

    我想将我的文字放入UILabel 但对于不同的 iPhone 尺寸UILabel正在改变 因为我正在使用自动布局 但我无法修复字体大小 所以我的文本被剪掉了 有什么方法可以设置任何约束以使文本适合UILabel动态地 看到这里 由于屏幕分辨
  • 为什么 UserPrincipal.FindByIdentity 返回有关 GUID 为 32 位的错误?

    我的应用程序使用UserPrincipal类来确定用户属于哪些组 然后使用该信息来确定用户是否经过身份验证才能使用我的应用程序 有一段时间一切都很好 但最近我开始遇到异常 Guid 应包含 32 位数字和 4 个破折号 xxxxxxxx x
  • SQL 和 C# 中两个日期计算之间的日期差异产生不同的结果

    我正在计算两个日期的日差 在 C 中 diffdays EndDate StartDate Days 因此 考虑到结束日期为 6 26 2015 开始日期为 6 10 2015 diffdays 值为 15 如调试时的 自动 部分所示 在
  • 在 WordPress 中缓存自定义社交分享计数

    我真的很喜欢有一个股票柜台在我的博客文章上 我注意到它实际上鼓励访问者自己分享内容 因为没有真正令我满意的 WordPress sharecount 插件 其中大多数都需要大量调用 所以我自己编写了代码 它工作完美 但仍然减慢了我的网站速度