Auto Tag Slug 插件失效的修改方法

背景

最近整理网站链接发现,过多中文标签链接,网上查询到 Auto Tag Slug 这个插件,可以很快的处理问题.

发现

WordPress 标签别名转换插件 Auto Tag Slug 现在使用不了,英文翻译失效了

原因

原来的 Bing API 转到了 Windows Azure Marketplace,翻译的接口变了。

而且google翻译会更快。

修改方法:

1、新建文件 google_translate.php , 内容如下:

function ats_google_translator($array){

    $translatorText = join($array,"|_|");

    if(!class_exists('Snoopy'))

    require_once(ABSPATH.WPINC."/class-snoopy.php");

    $snoopy = new Snoopy();

    $url = "http://translate.google.com/translate_t?langpair=zh|en";

    $submit_vars["hl"] = "zh-CN";

    $submit_vars["text"] = $translatorText;

    $submit_vars["ie"] = "UTF8";

    $submit_vars["langpair"] = "zh|en";

    $snoopy->agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN;

    rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11';

    $snoopy->submit($url,$submit_vars);

    if($snoopy->status >= 200 && $snoopy->status < 300){

    $htmlret = $snoopy->results;

        if(preg_match('//ius',

        $htmlret, $matchs) == 1){

            $out = explode($matchs[0],$htmlret);

            unset($matchs);

            $out = explode('

            ',$out[1]);

            $name_tmp = strip_tags($out[0]);

            $name_tmp = str_replace(" | _ | ","|_|",$name_tmp);

            unset($out,$htmlret);

            if(!empty($name_tmp))

            return explode("|_|",$name_tmp);

            unset($name_tmp);

        }

    }

}

2、编辑Auto Tag Slug插件的 auto-tag-slug.php 文件;

require_once(‘ms_translator.php’);替换成require_once(‘google_translate.php’);

$converted_tags = ats_bing_translate($ats_options['bing_key'],

$tags_array);替换成$converted_tags = ats_google_translator($tags_array);

保存并上传插件。

后台选择英文。

3、后台会提示你输入 bing api key,解决方法如下:

打开插件的auto-tag-slug.php,141行,注释掉,变成如下代码:

// add_action('admin_notices', 'ats_api_warning');
本文转载于网络 如有侵权请联系删除

相关文章

  • Maven 跳过测试的几种方式

    在Maven对项目进行编译的时候,我们通常可能会希望跳过复杂的测试。尤其是在开始项目还不是非常稳定的阶段。命令行中使用-Dmaven.test.skip=true在命令行,只要简单的给任何目标添加maven.test.skip属性就能跳过测试:mvninstall-Dmaven.test.skip=true命令行中使用-DskipTests在Maven的命令中,使用参数-DskipTests来跳过测试使用的命令为:mvninstall-Dmaven.test.skip=true修改POM文件在pom.xml文件中增加配置<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>true</skip> </c

  • 小特工具箱新增功能:公众号类API,可批量采集图文

    经过一段时间的开发,小特工具箱又增加若干API,这次主要是公众号类API,包括获取公众号图文详情、阅读量和点赞数公众号API,包括获取历史图文获取图文阅读数获取图文评论数据获取图文内容详情图文临时链接转永久链接公众号图文编辑推荐使用互动宝,网页版,完全免费。支持图文新增和导入,非常好用。官网地址:https://www.wxb.com/wxpush公众号助手属于小特产品之一,基于公众号公众平台API开发,可对菜单、素材操作,也可实现数据统计。公众号框架可实现公众号资源下载功能,公众号只需启用开发者模式,后台配置好Web地址即可。公众号后台回复关键字,即可实现资源下载

  • Python中可迭代对象怎么获取迭代器?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的。 废话不多说,开始今天的题目:问:说说Python中可迭代对象怎么获取迭代器?答:今天这个问题,需要看下面代码解析,再来说参考答案,这样理解的看面试题,对大家的学习更有帮助,千万别死记硬背,那样记不牢的。列表、元组、字典、字符串都是可迭代对象。数字、布尔值都是不可迭代的。昨天我们用了个简单的列表来说迭代器的用法:list=[1,2,3,4]#list是可迭代对象 lterator=iter(list)#通过iter()方法取得list的迭代器 print(next(lterator))#1通过next()获取下一个位置的值 print(next(lterator))#2 print(next(lterator))#3 print(next(lterator))#4 输出: 1 2 3

  • 瞬息万变的技术圈与焦虑的技术人,进阶Android需要掌握的那几个关键技术

    过了30岁后的人很多都会感受到一个问题:从大学毕业到迈入30岁其实只是一瞬,感觉没做什么,还没潇洒完,还没耍帅够就听着身边的人开始叫你大叔、大哥了。而30岁后更恐怖,你感觉时间越过越快,职业危机的死神早已悄悄的站在你身后了。黄金时期与技术热点对于技术人,从大学毕业到30岁是一个黄金时期,这个时期需要积蓄足够的力量,在30岁左右爆发,否则35岁多数人会走下坡路,不排除有大器晚成的,但是大器晚成的前提也是在早年做了充分的准备。正是由于技术人的黄金时间有限,因此大家都希望抓住技术趋势,赶上风口。近10年技术圈的瞬息万变结合技术人的黄金时期有限,技术人也变得越来越浮躁,越来越焦虑。首先列出最近几年技术圈的热点技术(这里只是做出举例,时间点未必完全准确):2010年2011年:Android和iOS在中国发芽生根,很多Java开发和塞班开发投入了Android和iOS的怀抱。 2012年2013年:Html5定稿,挑战Android和iOS。 2014年2015年:Android和iOS大火,势不可挡,培训机构倾巢出动。 2015年2016年:前端火爆,Android和iOS逐渐开始饱和,大数据

  • Android SQLite数据库进行查询优化的方法

    前言数据库的性能优化行业里面普遍偏少,今天这篇希望给大家带来点帮助SQLite是个典型的嵌入式DBMS,它有很多优点,它是轻量级的,在编译之后很小,其中一个原因就是在查询优化方面比较简单我们在使用SQLite进行数据存储查询的时候,要进行查询优化,这里就会用到索引,C端的数据量大部分情况下面虽然不是很大,但良好的索引建立习惯往往会带来不错的查询性能提升,同时在未知的将来经得住更大数据的考验,那如何优化数据库查询呢,下面我们用例子一一演示下。先建个测试表table1,包含了三个索引:sqlite.schem CREATETABLEtable1(idintegerprimarykeynotnulldefault0,ainteger,binteger,cinteger); CREATEINDEXa_iontable1(a); CREATEINDEXa_i2ontable1(a,b); CREATEINDEXa_i3ontable1(c);复制在常见的数据库系统里面,进行SQL查询检验都是用explain关键字,比如:sqliteexplainselect*fromtable1; addrop

  • 5种常见Bean映射工具的性能比对

    本文由JavaGuide翻译自https://www.baeldung.com/java-performance-mapping-frameworks。转载请注明原文地址以及翻译作者。1.介绍创建由多个层组成的大型Java应用程序需要使用多种领域模型,如持久化模型、领域模型或者所谓的DTO。为不同的应用程序层使用多个模型将要求我们提供bean之间的映射方法。手动执行此操作可以快速创建大量样板代码并消耗大量时间。幸运的是,Java有多个对象映射框架。在本教程中,我们将比较最流行的Java映射框架的性能。综合日常使用情况和相关测试数据,个人感觉MapStruct、ModelMapper这两个Bean映射框架是最佳选择。2.常见Bean映射框架概览2.1.DozerDozer是一个映射框架,它使用递归将数据从一个对象复制到另一个对象。框架不仅能够在bean之间复制属性,还能够在不同类型之间自动转换。要使用Dozer框架,我们需要添加这样的依赖到我们的项目:<dependency> <groupId>net.sf.dozer</groupId> <ar

  • 攻破VulnOS(3)之挑战PwnLad

    蛋疼的第三弹~~~,来了!首先,安装完虚拟机,我们没有这个靶机的密码。也不知道ip,只能扫描一下内网或者探测了。我在kali下用ipconfig看下我kali的地址,因为我的kali和靶机是同一个网卡。然后再用arp-scan或者netdiscover扫描一下C类地址。探测到,这个靶机的网址是101.Ok大致的看一下,是自己写的一个cms。我们用nmap进行半开扫描,nmap-sSVC-p-发现了不少服务。Apache、mysql、RPCOk,我们进一步在web页面收集信息。发现,有login,upload,home等三个链接。看到这串url是不是让你想起了,文件包含?因为虽然page这个是一个get参数,但是这里明显不可能是一个注入点。假设我们这里的文件包含是这个代码:Ok,那么我们为了进一步的信息探测,我们可以试试读取页面的源代码。哈哈,用伪协议去爆出来:http://192.168.56.101/?page=php://filter/read=convert.base64-encode/resource=index我们得到的base64加密后的源代码是:PD9waHANCi8vT

  • 【RAPID】中断程序详讲

    视频内容视频内容视频内容thankyou~

  • 云计算的可迁移性为什么很难完美实现

    导语可迁移性意味着企业可以将应用程序从一个主机环境迁移到另一个,其包括云平台之间的迁移。容器是一种将应用程序和操作系统封装到可以在支持Docker或Kubernetes等容器标准平台上运行的软件包的一种技术,从而使其迁移变得更加简单。但容器并不是灵丹妙药。许多云计算提供商都在谈论业务的可迁移性,这意味着需要使用诸如容器之类的技术,不过要是真那么简单就好了。 可迁移性意味着企业可以将应用程序从一个主机环境迁移到另一个,其包括云平台之间的迁移。例如从AmazonWebServices到MicrosoftAzure。而将应用程序从一个平台迁移到另一个平台所需的工作取决于具体情况。容器是一种将应用程序和操作系统封装到可以在支持Docker或Kubernetes等容器标准平台上运行的软件包的一种技术,从而使其迁移变得更加简单。但容器并不是灵丹妙药。实际情况是,迁移应用程序(无论它们是否在容器中)都需要大量的计划来处理不同环境的兼容性问题。容器的使用并不能保证企业的容器化应用程序都可以从一个平台迁移到另一个平台。例如,企业不能采用一个专门用于Linux的容器化应用程序在Windows上运行,或者反

  • 腾讯云容器镜像服务查询应用更新触发器api接口

    1.接口描述接口请求域名:tcr.tencentcloudapi.com。 用于查询应用更新触发器 默认接口请求频率限制:20次/秒。 APIExplorer提供了在线调用、签名验证、SDK代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成SDK调用示例。 2.输入参数以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。 参数名称 必选 类型 描述 Action 是 String 公共参数,本接口取值:DescribeApplicationTriggerPersonal。 Version 是 String 公共参数,本接口取值:2019-09-24。 Region 是 String 公共参数,详见产品支持的地域列表,本接口仅支持其中的:ap-beijing,ap-chengdu,ap-chongqing,ap-guangzhou,ap-hongkong,ap-nanjing,ap-shanghai,ap-singapore。 RepoName 否 String 仓库名称 Trig

  • 倒排索引

    1、倒排索引相关概念: 文档、文档集合、文档编号(DocId)、单词编号 倒排索引、单词词典、倒排列表、倒排文件 2、带有单词频率、文档频率和出现位置信息的倒排索引实例(实现term->DocID的映射关系,并附加主要的结果排序特征) 3、单词词表存储形式:哈希加链表、B树或B+树 4、倒排列表 在实际的搜索引擎中,并不保存倒排索引项中的实际文档编号,而是代之以文档编号差值(D-Gap),目的是为了增加数据压缩率。 5、建立索引的方式 两遍文档遍历法(2-passin-memoryinversion) 内存容量要求高、速度慢 排序法(Sort-basedInversion) 词典永不写磁盘;三元组形式;局部排序,中间结果文件合并(分配固定大小内存,内存-磁盘模型) 归并法(Merge-basedInversion)  词典随中间结果文件写磁盘;完整内存索引结构;对局部倒排索引结果合并(分配固定大小内存,内存-磁盘模型) 6、动态索引 倒排索引、临时索引、已删除文档列表 7、索引更新策略 完全重建策略、再合并策略、原地更新策略、混合策略 8、

  • NET 6 中新增的LINQ 方法

    .NET6中添加了许多LINQ方法。下表中列出的大多数新方法在System.Linq.Queryable类型中具有等效方法。 欢迎关注 如果你刻意练习某件事情请超过10000小时,那么你就会达到世界级别 TryGetNonEnumeratedCount尝试在不强制枚举的情况下确定序列中的元素数。 List<object>numbers1=newList<object>(){5,4,"nihao"}; intnum=0; numbers1.TryGetNonEnumeratedCount(outnum); 复制 num输出为3 Chunk将序列的元素拆分为指定大小的区块 varlist=newList<dynamic> { new{Id=1,Property="value1"}, new{Id=2,Property="value2"}, new{Id=3,Property="value1"} }; vara=list.Chunk(2); 复制 返回两个元素,第一个list长度为2,第二个为1 ElementAt方法返回元素指定索引或者结束的索引

  • 对commonMark.js的理解学习

      前几天一直在看markdowm和commonMark.js之间的关系,刚开始还是搞的蛮糊涂的。   今天在大致看工程下面lib文件夹下的js函数的功能: from-code-point.js:函数和String类的fromCodePoint功能是一样的,在若浏览器或者平台上不炸支持这个函数的情况下写了自己定义的函数;这个函数的功能一个是把字元转换为unicode字符。 从官网上摘下来的例子: String.fromCodePoint(42);//"*" String.fromCodePoint(65,90);//"AZ" String.fromCodePoint(0x404);//"\u0404" String.fromCodePoint(0x2F804);//"\uD87E\uDC04" String.fromCodePoint(194564);//"\uD87E\uDC04" String.fromCodePoint(0x1D306,0x61,0x1D307)//"\uD834\uDF06a\uD834\uDF07" String.fromCodePoint('_');

  • 用Open Live Writer写博体验

    感觉还蛮方便的——openlivewriter第一博!

  • Sqlserver 窗口函数 partition by 是否结合 order by的区别

    今天在做一个SQL查询的时候,用到了partition by这个窗口函数,以前只是简单的用过partitionby 后边直接跟上 orderby语句做移动累计的效果,   而今天用partition的时候,获取的是最大值和最小值,后边也直接跟上了orderby语句,认为orderby跟普通的orderby语句一样,不会影响最大和最小值,   可实际运行情况打脸了,   先贴带上orderby的截图             再贴上不加orderby 截图            也就是说如果加上了orderby的话,求最大和最小值的时候,是按照当前记录所在行 按照orderby字段排序之前记录的最大和最小值    在此仅做个笔记,加深下印象。     凡事用心去做,认真对待!

  • 微信小程序踩坑日记2——实时访问数据库并渲染UI

    0.引言   主要讲讲对于实时访问数据库并渲染UI我的解决方法。   一开始查到了随让小程序是单线程的,但是有一个基本上是封装的worker线程,相当于可以自己自定义(类似于Android开发里的handler)。我的想法是让这个线程,一直进行wx.request()的数据库访问操作,然后再根据拿到的信息是否变换来决定是否渲染UI。结果发现,worker不支持wx.的这些方法。。。。   但是,在之前获取用户登陆信息的时候,用到了回调函数(其实就是判断这个函数是否存在,不存在就创建一个,我的理解不知道对不对)。然后,我发现了一个东西。用图来解释一下,就是每当【代码段A】执行的时候,【代码段B】都会被触发。         这样的话,只需要设置一个定时器,让它不停的访问数据库,在ws.request()的success方法里,添加这个回调函数,就可以假装是一直访问数据库,并且只有在数据不同的时候才会渲染UI。 1.实现   数据库访问代码段 wx.request({ url:'https://xxxxxx/xxxx.php', data:{}, header:{'content-typ

  • Js删除数组中的空值

    filter过滤方法 vararr=['A','','B',null,undefined,'C','']; varr=arr.filter(function(s){ returns&&s.trim();//注:IE9(不包含IE9)以下的版本没有trim()方法 });复制  

  • 循环单向链表(约瑟夫环)

    #include<stdio.h> #include<stdlib.h> typedefstructList { intdata; structList*next; }List; //创建循环单向链表n为长度 List*list_create(intn) { List*head,*p; inti; head=(List*)malloc(sizeof(List)); p=head; p->data=1;//创建第一个结点 for(i=2;i<=n;i++)//创建剩余结点 { p->next=(List*)malloc(sizeof(List)); p=p->next; p->data=i; } p->next=head; returnhead; } //打印循环链表 voidlist_print(List*head) { List*index; printf("%d\t",head->data);//输出第一个节点 index=head->next; while(index!=head)//判断是否是最后一

  • 2021-2022-1学期20212406《网络空间安全专业导论》第一周学习总结

    2021-2022-1学期20212406《网络空间安全专业导论》第一周学习总结 目录2021-2022-1学期20212406《网络空间安全专业导论》第一周学习总结第二章数字包括自然数,负数,整数,有理数。位置记数法:涉及整数的进制转换:二进制数值与计算机本章问题:为什么说0对位置记数法十分重要?第三章数据与计算机:数字数据表示法:补充(书籍加百度搜索):涉及小数的进制转化 第二章 数字包括自然数,负数,整数,有理数。 位置记数法: 1·数字是用位置记数法编写的,从右往左依次乘以基数的0次幂,1次幂···N次幂。 2·基数规定了这个系统中使用的数字量和数字位置的值。任何记数系统中的最大数字比基数小。 3·位置记数法中两个不一样的数字可以等值. 4·0是所有现代数学分支的交集中的基本概念,位置记数法也因此而存在。 涉及整数的进制转换: 1·N进制转十进制:依次乘以基数(N)的幂,相加。如:二进制中11=十进制中3 2·十进制转N进制:除以基数,取余数,将其倒排。如:十进制中9=八进制中11 3·二进制转八进制:从最右边的数位开始,每三个一组,每组对应转化成八进制数位。如1010110-

  • 打字效果动画实现方法

    方法一(纯css实现): html代码: <h1class="typingtyping-item">打字动画打字动画打字动画</h1>复制 css样式: .typing{ font-size:1rem; padding-top:6%; margin-bottom:5%; font-weight:normal; letter-spacing:.3rem; -webkit-animation:type2ssteps(50,end)forwards; animation:type2ssteps(50,end)forwards; } .typing-item{ text-align:center; color:black; width:100%; white-space:nowrap; overflow:hidden; } @-webkit-keyframestype{ from{width:0;} } @keyframestype{ from{width:0;} }复制 缺点:只能实现一行式的打字效果,无法打出一段落文字    方法二(j

  • 今天开通了博客

    十一假期结束了,过两天要开始公司项目的迭代版本开发。 早就想写写博客之类的。 毕竟自己有如此闷骚的性格。 先从分享开始吧,最近没什么特别多的时间。 一为分享 二为纪录 三为装逼

相关推荐

推荐阅读