2015年11月

来自:http://www.xhily.cn/archives/204.html
还在手动输入评论的信息而烦恼吗
这个技巧分分钟解决

对于 wordpressemlogTypechozb-blog 这几类的 原生评论模块 都可以使用

以下是程序代码,把它存到书签里就行了,,遇到要评论的时候点击这个书签即可一键填写:

avascript:var nn='你的呢称',mm='你的邮箱',uu='你的网站';var emname=document.getElementsByName('comname'),emmail=document.getElementsByName('commail'),emurl=document.getElementsByName('comurl'),wpname=document.getElementsByName('author'),wpmail=document.getElementsByName('email'),wpurl=document.getElementsByName('url'),zbname=document.getElementsByName('inpName'),zbmail=document.getElementsByName('inpEmail'),zburl=document.getElementsByName('inpHomePage'),tpmail=document.getElementsByName('mail');if(emname.length>0){emname[0].value=nn;emmail[0].value=mm;emurl[0].value=uu; void(0);}else if(wpmail.length>0){wpname[0].value=nn;wpmail[0].value=mm;wpurl[0].value=uu;void(0);}else if(zbname.length>0){zbname[0].value=nn;zbmail[0].value=mm;zburl[0].value=uu; void(0);}else if(tpmail.length>0){tpmail[0].value=mm;wpname[0].value=nn;wpurl[0].value=uu;void(0);}

把红色部分改成自己的信息就行了

具体教程
1

来自 网站添加点击出现随机两位数代码

在网站点击页面的时候 有没有发现有两位数弹出来啊

原来想添加的时候各种失败 无法添加

今天试试 终于可以了
代码附上

<script type="text/javascript" src="http://hsdate.qiniudn.com/123.js"></script>

JS代码为

jQuery(document).ready(function($) {
$("html,body").click(function(e){
var n=Math.round(Math.random()*100);//随机数
var $i=$("<b></b>").text("+"+n);//添加到页面的元素
var x=e.pageX,y=e.pageY;//鼠标点击的位置
$i.css({
"z-index":99999,
"top":y-20,
"left":x,
"position":"absolute",
"color":"#E94F06"
});
$("body").append($i);
$i.animate(
{"top":y-180,"opacity":0},
1500,
function(){$i.remove();}
);
e.stopPropagation();
});
});

将代码添加到想要的地方即可

我是添加到footer里 所以页面都可以实现

伸手党~~

主题

Typecho之家的精品主题 http://typecho.cc/themes/
TYPECHO主题模板站 https://typecho.me/
仿V2EX的Typecho主题 https://github.com/melifes/Theme
Tyepcho主题 Sunburst https://ciyuanai.net/archives/244.html

插件

Typecho外链转内链插件,支持正文和评论者链接 https://github.com/Char1sma/ShortLinks
Typecho之家的精品插件 http://typecho.cc/plugins/
推荐几款Typecho用的CDN插件 https://ciyuanai.net/archives/26.html
微信助手:WeChatHelper for Typecho http://binjoo.net/post/1086
文章目录插件 https://github.com/phpgao/TableOfContents
插件 专题 http://www.typechodev.com/index.php/category/plugin/
收集的插件https://code.google.com/archive/p/typecho-plugins/downloads
typecho 插件 https://github.com/typecho-fans/plugins
Typecho插件 https://plugins.typecho.me/
微信评论通知 https://github.com/YianAndCode/Comment2Wechat

教程

Typecho主题开发函数
Typecho主题模板制作快速入门简易教程
模板制作快速入门
Typecho插件相关信息
typecho主题制作总结
typecho博客主题常用代码
收集一些TYPECHO模板制作过程中的常见代码、插件、模板

提问的智慧
提问的智慧(How To Ask Questions The Smart Way)一文最早是由Eric Steven Raymond所撰写,说明了作者所认为一位发问者事前应该要做好什么,而什么又是不该做的。作者认为这样能让问题容易令人理解,而且发问者自己也能学到较多东西。

此文在网络上受到欢迎,被广泛转载而广为人知甚至奉为经典。该文也有简体中文与繁体中文的翻译版本被流传着,所以在华人界也是很有名的文章。著名的两个缩写STFW(Search the fxxking web)以及RTFM(Read the fxxking manual)就是出自本文。

有些人认为文中部分用词对新手不太友善,所以作者后来也在新版中做了较委婉的修饰。目前作者仍持续进行更新本文,最近一次更新是2013年4月23日。--来自 维基百科
英文版 http://www.catb.org/~esr/faqs/smart-questions.html
中文版 http://doc.zengrong.net/smart-questions/cn.html

GitHub https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way
GitHub中文版 https://github.com/FredWe/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md
衍生版:
图说:提问的智慧
提问的智慧
如何成为一名黑客
smart_questions
提問的智慧繁体版

今天小小导航(www.m69w.com)莫名出现小绿锁不见了,还以为是证书的问题
果断Ctrl+Shift+I,发现
1
2
打开图上那个网址是跳转到https://www.taobao.com (302)你懂的吧
其实cnzz要也没用,个人小站,多此一举!
还不如用Google Analytics!

你尽力了吗?
文章作者:SCZ
信息来源:邪恶八进制信息安全团队(www.eviloctal.com
很多人问如何入门如何入门,我却不知道要问的是入什么门。很少把某些好文章耐心从头看完,我这次就深有体会。比如袁哥的sniffer原理,一直以为自己对sniffer原理很清楚的,所以也就不曾仔细看过袁哥的这篇。后来有天晚上和袁哥讨论,如何通过端口读写直接获取mac地址,为什么antisniff可以获得真正的mac地址,而不受更改mac地址技术的影响,如何在linux下获得真正的mac地址。我一直对linux下的端口读写心存疑虑,总觉得在保护模式下的端口都做了内存映象等等。结果袁哥问了我一句,你仔细看我写的文章没有,我愣,最近因为要印刷月刊,我整理以前的很多文档,被迫认真过滤它们,才发现袁哥的文章让我又有新认识。再后来整理到tt的几篇缓冲区溢出的,尤其是上面的关于Solaris可装载内核模块,那就更觉得惭愧了。
以前说书非借不能读,现在是文章留在硬盘上却不读。其实本版已经很多经典文章了,也推荐了不少经典书籍了,有几个好好看过呢。W.Richard.Stevens的UNP我算是认真看过加了不少旁注,APUE就没有那么认真了,而卷II的一半认真看过,写过读书笔记,卷III就没有看一页。道格拉斯的卷I、卷III是认真看过几遍,卷II就只断续看过。而很多技术文章,如果搞到手了就懒得再看,却不知道这浪费了多少资源,忽略了多少资源。BBS是真正能学到东西的地方吗?rain说不是的,我说也不是的。不过这里能开阔人的视野,能得到对大方向的指引,足够了。我一直都希望大家从这里学到的不是技术本身,而是学习方法和一种不再狂热的淡然。很多技术,明天就会过时,如果你掌握的是学习方法,那你还有下一个机会,如果你掌握的仅仅是这个技术本身,你就没有机会了。其实我对系统安全是真不懂,因为我一直都喜欢看程序写程序却不喜欢也没有能力攻击谁谁的主机/站点。
我所能在这里做的是,为大家提供一个方向,一种让你的狂热归于淡然的说教。如果你连看都没有看过,却要写个什么隐藏自己的木马,搞笑。如果你看都不看汇编语言,偏要问exploit code的原理,那我无法回答也不想回答你。总有人责问,要讨个说法云云,说什么提问却没有回答。不回答已经是正确的处理方式了,至少没有回你一句,看书去,对不对,至少没有扰乱版面让你生闷气。Unix的man手册你要都看完了,想不会Unix都不行了。微软的MSDN、Platform SDK DOC你要看完了,你想把Win编程想象得稍微困难点都找不到理由。
还是那句话,一个程序员做到W.Richard.Stevens那个份上,做到逝世后还能叫全世界的顶级hacker们专门著文怀念,但生前却不曾著文攻击,想想看,那是一种什么样的境界,那是一份什么样的淡然。我们可以大肆讨论技术问题,可以就技术问题进行激烈的卓有成效的讨论,却无意进行基础知识、资源信息的版面重复。我刚在前面贴了一堆isbase的文章,开头就是主页标识,却在后面立刻问什么主页在哪里?前面刚刚讨论过如何修改mac地址,后面马上又来一个,前后相差不过3篇文章。选择沉默已经是很多朋友忍耐力的优异表现了。很多东西都是可以举一反三的。vertex的lids,被packetstorm天天追踪更新,你要是看了THC的那三篇,觉得理解一个就理解了一堆,都是内核模块上的手脚。你不看你怎么知道。我不想在这里陷入具体技术问题的讨论中去,你要是觉得该做点什么了,就自己去看自己去找。没有什么人摆什么架子,也没有什么人生来就是干这个的。

你自己问自己,尽力了吗?

桌面版用户https://pan.baidu.com/share/home?uk=用户ID#category/type=0

手机版用户http://pan.baidu.com/wap/share/home?uk=用户ID&third=0

桌面版分享https://pan.baidu.com/share/link?shareid=分享ID&uk=用户ID

手机版分享https://pan.baidu.com/wap/init?shareid=分享ID&uk=用户ID

点击头像即可找到链接ID

用VPS下360云盘和百度云:方法2更简单

1.将解析出来的下载地址,在Linux终端使用wget下载:

wget -c --referer=http://pan.baidu.com/s/1hq04k1e -O testfile.PNG "http://nb.baidupcs.com/file/6a0a41574d8603ff04786b046da3e361?...........testfile.PNG"
注:此处-c 为断点续传,--referer为百度云分享地址,-O为指定输出文件,后面接浏览器下载文件的下载地址。
终于可以使用wget轻松下载百度云盘共享的资源了。

2.wget -c -O 文件名.后序名 "云盘解析后的下载地址"

网页不能下载EXE,
你可以用 ie核,chrome核的不行。
或者把这个转存到你的网盘,
你再改一下扩展名格式,改成rar就可以了,
下载完再改回来

油猴脚本+百度网盘直接下载助手

http://pan.baidu.com/* 

打开Network, 选All, 点击【下载】,在Type出现【document】,在Initiator下右键【Copy】->【Copy link address 】

https://www.v2ex.com/t/350200

使用ADM下载

搭配百度云不限速方法:
·打开ADM Pro 的侧滑栏 选择 “设置”
·再选择 “下载”
·然后选择 “User-Agent”(浏览器标识)
·在对话框中选择 "Custom" (自定义)
·最后在 “Custom项” 中填写:netdisk;5.2.7;PC;PC-Windows;6.2.9200;WindowsBaiduYunGuanJia
·打开es浏览器,选择网盘,点添加,然后点百度云,输入你的百度云帐号登录。
·找到你要下载的软件,视频,zip,长按,打开为音频,选择ADP PRO,然后点击开始。
·可以了!大家飞速下载吧!!
·以后下载的时候选择ADM Pro下载就可以了!

来自:JS版俄罗斯方块代码详细解说
书写过程中的难点

方块变形算法的实现
边界检测和占用检测
方块旋转算法及BUG修复的两种方式

首先说明一下,方块我们是用一维数组来存储四个对象来实现的。方块表示代码如下:

switch (t){
            case 0:{                                   //"田"字形
                this.shape[0] = {x:0, y:0};
                this.shape[1] = {x:1, y:0};
                this.shape[2] = {x:0, y:1};
                this.shape[3] = {x:1, y:1};
                break;
            }
            case 1:{                                   //"|"字形
                this.shape[0] = {x:0, y:0};
                this.shape[1] = {x:0, y:1};
                this.shape[2] = {x:0, y:2};
                this.shape[3] = {x:0, y:3};
                break;
            }
            case 2:{                                   //反"z"字形
                this.shape[0] = {x:0, y:0};
                this.shape[1] = {x:0, y:1};
                this.shape[2] = {x:1, y:1};
                this.shape[3] = {x:1, y:2};
                break;
            }
            case 3:{                                   //"z"字形
                this.shape[0] = {x:1, y:0};
                this.shape[1] = {x:1, y:1};
                this.shape[2] = {x:0, y:1};
                this.shape[3] = {x:0, y:2};
                break;
            }
            case 4:{                                  //"┖"字形
                this.shape[0] = {x:0, y:0};
                this.shape[1] = {x:0, y:1};
                this.shape[2] = {x:1, y:1};
                this.shape[3] = {x:2, y:1};
                break;
            }
            case 5:{                                  //"┛"字形
                this.shape[0] = {x:0, y:1};
                this.shape[1] = {x:1, y:1};
                this.shape[2] = {x:2, y:1};
                this.shape[3] = {x:2, y:0};
                break;
            }
            case 6:{                                   //"┻"字形
                this.shape[0] = {x:1, y:0};
                this.shape[1] = {x:0, y:1};
                this.shape[2] = {x:1, y:1};
                this.shape[3] = {x:2, y:1};
                break;
            }
        }

而上面的x,y代表着他的位置,看起来还真像数学里面学习的二维坐标系。那现在我们就先用数学方法来模拟旋转。请看下图:
请输入图片描述
俄罗斯广场旋转算法详解 向量CA = (X1 – X, Y1 - Y) 把向量CA顺时针旋转90度,得到向量CB,由(CA * CB =0)可知: 向量CB = (Y1 - Y, X – X1) 又由于 向量CB = (X2 – X , Y2 - Y) 故得X2= X – Y + Y1 Y2 = X + Y –X1 由以上的旋转方法,我们就可以对方块进行变形处理。代码如下:(以下是以逆时针方向旋转为基础)

block.prototype.rotate = function(){                
        this.copy();
        //复制当前activeBlock方块,当旋转不符合要求时,可以还原方块
        this.board.eraserActblock();
        var cx = 0,cy = 0;
        for(var i=0; i<this.shape.length; i++){
            cx += this.shape[i].x;
            cy += this.shape[i].y;
        }
        cx = Math.round(cx/this.shape.length);
        cy = Math.round(cy/this.shape.length);
        if(this.blockType == 4 || this.blockType == 5 || this.blockType == 6){   
            //对方块类型进行判断
            for(i = 0; i<this.shape.length; i++){                                
                //旋转方块
                this.shape[i].x = cx + cy - this.backShape[i].y;
                this.shape[i].y = cy - cx + this.backShape[i].x;
            }
        } else if(this.max("x")-this.min("x") == 1 || this.max('x')- this.min('x') == 3) {
            for(i = 0; i<this.shape.length; i++){                                
                //旋转方块
                this.shape[i].x = cx + cy - this.backShape[i].y-1;
                this.shape[i].y = cy - cx + this.backShape[i].x;
            }
        }  else {
            for(i = 0; i<this.shape.length; i++){                                
                //旋转方块
                this.shape[i].x = cx + cy - this.backShape[i].y;
                this.shape[i].y = cy - cx + this.backShape[i].x;
            }
        }
        if(!this.isIllegal()){                            
            //旋转后的方块不符合要求,则还原方块
            for( i=0; i< this.shape.length; i++){
                this.shape[i].x = this.backShape[i].x;
                this.shape[i].y = this.backShape[i].y;
            }
        }
        this.board.paintActblock();
    }

你可以查看DEMO(点击查看演示DEMO),里面也是用逆时针方向来实现的旋转。其中bug,你一看就会知道。(产生的具体原因就自行分析吧!) 旋转算法引起水平偏移BUG的两种解决方案:
进行类型分析,不同类型单独处理(具体代码见上)
方块移动方向改为向下(即可以把旋转方向改为顺时针方向,具体算法实现见上讲旋转算法处),从而达到隐藏bug偏移产生的bug。
方块的边界检测和合法性检测

其实怎么说呢?合法性和边界这两个特性是分不开的。因为边界性如果检测不通过的话,那么合法性也就更不用说了。 边界检测就是检测board对象shape属性保存的数组中对象x、y的值是否在面板内。而占用检测也就是看当前board对象中shape属性保存的数组中对象x、y所对就面板的小方块不否为1,要是为1的话,证明已经被占用,相反则没有占用。实现的代码如下:

block.prototype.isIllegal = function(checkObj){//这个里面放被检测的对象
        var checkObj = checkObj || this.shape;
        for(var i=0; i<checkObj.length; i++){
            if(checkObj[i].x < 0 || checkObj[i].x > (this.board.w-1) || checkObj[i].y<0 || this.board.status[checkObj[i].y][checkObj[i].x] ==1 ){
                return false;
            }
        }
        return true;
    };

欲看详源代码,请请试玩“俄罗斯方块重写”,并占击右键查看源代码。此版本会一直保存,后序版本将会在此版本上进行扩展。并最终实现在手机,电脑上都可以玩。 小结: 第一次利用原生的Javascript来写小游戏。感受颇多!
JavaScript真的很强大。只要你想得到,它几乎都能做得到(可能说的是有点夸张了)。
原来写JS代码多是面向过程来写的。而这次也是尝试着来用面向对象的方法来写,也就使得我对this关键字,作用域链等都有了更加深入的了解。
代码总体来讲是完整了写了两次,第一次写完了,自己实现是看不下去,所以又重写了。但是现在看来现在可以看到的版本,还是存在很多的问题。(在后面的时间里,我会在此基础上进行完善和扩展。)

转载:WordPress前端未审核留言提醒
这个实用的小功能找了很久,终于在[这里]2找到了答案。

他把提醒放到了标题里滚动显示了,我改成直接像多说一样显示,PHP代码如下:

// 返回网站中未审核留言数
function get_not_audit_comments(){
    if(is_home() && current_user_can('level_10')){    //只有在首页,并且管理员登录是才执行
        $awaiting_mod = wp_count_comments();
        $awaiting_mod = $awaiting_mod->moderated;
        if($awaiting_mod){
            //当存在未审核留言
            echo "<div id=\"awaiting_comments\"><a href=".admin_url( 'edit-comments.php' ).'><i class=\'fa fa-comments\'></i>你有'.$awaiting_mod.'条新回复</a></div>';
         }
    }
}
add_filter('wp_footer','get_not_audit_comments');

CSS代码如下:

#awaiting_comments{
    position:fixed;
    top: 65px;
    right: 24px;
    z-index:9999;
    max-width: 180px;
    _width:130px;
    display:block;
    float:none;
    padding: 5px 12px;
    background-color:#fff;
    -webkit-border-radius:5px;
    border-radius:5px;
    box-shadow:0 1px 1px rgba(0,0,0,0.25);
    border:1px solid #aaa;
}
 
#awaiting_comments i{
    margin-right: 7px;
}
 
#awaiting_comments a{
    line-height: 1;
    color:#d32;
    text-decoration:none;
}

在网站标题中加入未审核留言提醒

前两天看了一套wordpress主题,感觉其中的一个很小的功能很不错(你可以查看本文网页标题)。当网站有新的留言,管理员登录之后,在网站首页的标题上就可以看到消息提醒,很是方便。看了主题源码,没有找到相应的代码。之后通过查找网站后台的模板,才知道可以通过wp_count_comments()来得到相关的信息。 其它的,咱也不多说了,直接来说怎么做吧!把以下的代码复制到主题的functions.php文件中。

// 返回网站中未审核留言数
function get_not_audit_comments(){
    if(is_home() && current_user_can('level_10')){    //只有在首页,并且管理员登录是才执行
        $awaiting_mod = wp_count_comments();
        $awaiting_mod = $awaiting_mod->moderated;
        if($awaiting_mod){
            //当存在未审核留言
            echo "<div style=\"display:none;\" id=\"awaiting_mod\">【有".$awaiting_mod.'条未审核留言】-</div>';
            echo '<script type=\'text/javascript\' src=\'';
            bloginfo('stylesheet_directory');
            echo '/js/titlemove.js\'></script>';
         }
    }
}
add_filter('wp_footer','get_not_audit_comments');

接着,把下面的代码另存为titlemove.js,并放到当前主题的js文件夹中(如果不存在的话,你可以直接创建)。

function titlemove(){
    var msg =document.getElementById('awaiting_mod').textContent + window.document.title;
    setInterval(function(){
        msg = msg.substring(1,msg.length) + msg.substring(0,1);
        window.document.title = msg;
    },500);
}
jQuery(function(){
    titlemove();
});

由于以上代码,部分是依赖于jQuery库,所以请确保你已经加载了jQuery库。 完成以上操作,登录后返回到网站的首页,如果存在未审核留言的话,你应该就会看到类似本文标题连环滚动的样子了。

来自老赵茶馆:WordPress 登录保护加强版
事关自从添加了登录失败的邮件通知后,一直有人反馈说有机器人暴力破解,而收到一大堆邮件。不过实际上只要你的用户们和密码足够复杂,机器人没几万年也破解不了。

请看下面所谓的修改后台登录地址的保护方法:

//保护后台登录
add_action('login_enqueue_scripts','login_protection');  
function login_protection(){  
    if($_GET['admin'] != 'true')header('Location: http://lazyhood.com/');  
}

这种方法只等挡住人为的破解,机器人压根不会访问Wordpress后台的登录地址,而是通过以post方式提交的登录请求的。

所以只能想办法了,一就是安装一些登录保护插件例如lockdown,一就是添加保护代码到functions.php,我选择后者。谷歌后得到的答案是这样子的,提供了三重登录保护。

首先是阻止与HTTP 1.0的任何登录POST请求,因为常见的机器人都是使用HTTP1.0,这应该有效地阻止他们登录:

//过滤HTTP 1.0的登录POST请求
function wlp_filter_http() {
  if(preg_match('/1.0/',$_SERVER['SERVER_PROTOCOL'])) { wlp_forbidden(); }
}
add_action('login_init','wlp_filter_http');

然后是通过设置一个cookie的初始值,如果cookie不存在POST请求,登录会被阻止:

// POST Cookie 保护
function wlp_set_login_protection_cookie() {
  if( strtoupper($_SERVER['REQUEST_METHOD'])=='GET' and
      !isset($_COOKIE['wlp_post_protection']) ) {
    setcookie('wlp_post_protection','1',time()+60*60*24);
    $_COOKIE['wlp_post_protection'] = '1';
  }
}
 
function wlp_post_protection() {
  if( strtoupper($_SERVER['REQUEST_METHOD'])=='POST' and
      !isset($_COOKIE['wlp_post_protection']) ) {
    wlp_forbidden();
  }
}
add_action('init','wlp_set_login_protection_cookie');
add_action('login_init','wlp_post_protection');

最后是增加额外登录验证,这将增加一层额外的WordPress的登录页面,这是一个更积极的做法,而应完全防止任何从机器人甚至试图WordPress的登录,不同于修改你的网络服务器配置,以增加基本身份验证,这种方法不会破坏AJAX行为的功能。

// 增加额外登录验证
function wlp_basic_auth() {
  if( !isset($_SERVER['PHP_AUTH_USER']) or !isset($_SERVER['PHP_AUTH_PW']) )
    wlp_unauthorized(__('No credentials have been provided.', 'memberpress'));
  else {
    $user = wp_authenticate($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']);
 
    if(is_wp_error($user))
      wlp_unauthorized( $user->get_error_message() );
  }
}
function wlp_unauthorized($message) {
  header('WWW-Authenticate: Basic realm="' . get_option('blogname') . '"');
  header('HTTP/1.0 401 Unauthorized');
  die(sprintf(__('UNAUTHORIZED: %s', 'memberpress'),$message));
}
add_action('login_init','wlp_basic_auth');

最最后的一步是当登录失败时,让服务器返回403状态:

// 登录错误,返回403状态
function wlp_forbidden() {
  header("HTTP/1.0 403 Forbidden");
  exit;
}

来自老赵茶馆:使用PHP方式切换CSS样式

CSS-Style-Switcher地址:Github

效果就是我网站的右上角的皮肤切换按钮,网上切换CSS样式的教程其实很多,但都是以js的方式切换的,就是说虽然有cookie效果,但每次都要加载这段js,甚至有时出现延迟闪烁的问题,我的Teahouse就是使用js的ajax方式的。我后来谷歌了一下,找到了使用PHP方式切换CSS样式,效果更理想些,可惜每次都要刷新。

先看看作者的概述:
一个简单的切换CSS样式的PHP脚本,支持一次多个CSS文件,具有默认的CSS文件的支持,更多等等,一个漂亮整洁的脚本而且比JavaScript更稳定的解决方案。

功能

无须PHP知识,不用安装,只需把这个脚本拖放到你的CSS文件夹,并且确保你的服务器支持PHP
只有一个HTML文件的情况下,通过多个CSS文件来理想的展示你工作。
比JavaScript模式更快,而且就算浏览器没开启js支持也没问题
自动定义以下顺序的一个或多个默认的CSS文件:
自动寻找default_1.css和default_2.css作为默认样式
假如寻找不到默认样式,即按字母寻找第一个CSS文件
使用链接来改变CSS样式,设置Cookie为1小时,然后重定向到最后一页。如果上次访问页面无法找到(HTTP_REFERER)PHP脚本将重定向到网站的索引。

使用

在头部引入脚本

<link rel="stylesheet" type="text/css" href="css/switch.php">

把你的css样式文件都放到PHP脚本的同一目录下
通过链接改变CSS样式

<a href=”css/switcher.php?style=another_1.css”>其它样式</a>




来自老赵茶馆的:http://zhw-island.com/wordpress/jquery-qrcode.html

A collection of web development logos in SVG :link

Svg的好处就不多说了,实际上wordpress默认是不支持svg上传的,在functions.php文件里添加以下代码即可

/* SVG支持 */
function my_upload_mimes($mimes = array()) {
    $mimes['svg'] = 'image/svg+xml';
    return $mimes;
}
add_filter('upload_mimes', 'my_upload_mimes');

来自老赵茶馆的使用jQuery.qrcode为WordPress文章动态生成二维码

jQuery.qrcode地址:link
在线生成器:link

网上流传的方法是采用外网的API方式生成,好处是简单粗暴,缺点是自定义不够;我主题使用的是jQuery.qrcode,好处是自定义功能丰富,缺点是要加载额外js。
首先是载入jQuery,载入jQuery.qrcode,然后在single.php里加入以下代码:

<script>
jQuery(window).load(function() {
    jQuery("#qrcode").qrcode({
        text: "<?php the_permalink(); ?>"
    });
});
</script>

当然,这是最简单的配置,再加些css美化下就OK了,下面说说所有配置的,可按需添加。

{
    // 渲染方式默认有html5的画布canvas,还有image、div
    render: 'canvas',
 
    // 版本version范围为1到40,就是格子的密度
    minVersion: 1,
    maxVersion: 40,
 
    // 容错率从低到高四种模式: 'L', 'M', 'Q' or 'H'
    ecLevel: 'L',
 
    // 如果画布渲染时的上像素偏移
    left: 0,
    top: 0,
 
    // 像素大小
    size: 200,
 
    // 填充颜色
    fill: '#000',
 
    // 背景颜色
    background: null,
 
    // 内容,可以使文本或者网址
    text: 'no text',
 
    // 圆角: 0.0 到 0.5
    radius: 0,
 
    // 空白的边界
    quiet: 0,
 
    //模式
    // 0: normal,正常模式即最简洁模式
    // 1: label strip,可插入标签条
    // 2: label box,可插入标签盒子
    // 3: image strip,可插入图像条
    // 4: image box,可插入图像盒子
    mode: 0,
 
    // 分别是标签或图像的缩放,x偏移,y偏移
    mSize: 0.1,
    mPosX: 0.5,
    mPosY: 0.5,
 
    // 标签文字、字体、颜色
    label: 'no label',
    fontname: 'sans',
    fontcolor: '#000',
 
    // 图像的地址
    image: null
}

就这么简单,就是有一个难点,就是模式3和模式4的插入图像问题,你不能直接在image选项后面直接填入图像地址,那样会报错。作者解释说道,在运行生成二维码之前,图像必须先载入,然后通过选择器填入image选项。
就是说,图像必须在二维码之前载入,那就简单,我把图像载入但是通过css把它隐藏掉

<div id="qrcode">
     <img id="qrcode_img" style="display:none" src="/images/qr-img.png">
</div>
 
 
...
 
<script>
jQuery(window).load(function() {
    jQuery("#qrcode").qrcode({
        mode: 4,
    image: jQuery('#qrcode_img')[0],
        text: "<?php the_permalink(); ?>"
    });
});
</script>
 
...