//Willin Kan的反垃圾评论代码 class anti_spam { function anti_spam() { if ( !current_user_can('level_0') ) { add_action('template_redirect', array($this, 'w_tb'), 1); add_action('init', array($this, 'gate'), 1); add_action('preprocess_comment', array($this, 'sink'), 1); } } function w_tb() { if ( is_singular() ) { ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=([\"\'])comment([\"\'])(.+)/textarea>#", "textarea$1name=$2w$3$4/textarea><textarea name=\"comment\" cols=\"100%\" rows=\"4\" style=\"display:none\"></textarea>",$input);') ); } } function gate() { if ( !empty($_POST['w']) && empty($_POST['comment']) ) { $_POST['comment'] = $_POST['w']; } else { $request = $_SERVER['REQUEST_URI']; $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '隐瞒'; $IP = isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] . ' (透过D理)' : $_SERVER["REMOTE_ADDR"]; $way = isset($_POST['w']) ? '手动操作' : '未经评论表格'; $spamcom = isset($_POST['comment']) ? $_POST['comment'] : null; $_POST['spam_confirmed'] = "请求: ". $request. "\n来路: ". $referer. "\nIP: ". $IP. "\n方式: ". $way. "\n內容: ". $spamcom. "\n -- 记录成功 --"; } } function sink( $comment ) { if ( !empty($_POST['spam_confirmed']) ) { if ( in_array( $comment['comment_type'], array('pingback', 'trackback') ) ) return $comment; //方法一: 直接挡掉, 將 die(); 前面两斜线刪除即可. die(); //方法二: 标记为 spam, 留在资料库检查是否误判. //add_filter('pre_comment_approved', create_function('', 'return "spam";')); //$comment['comment_content'] = "[ 判断这是 Spam! ]\n". $_POST['spam_confirmed']; } return $comment; } } $anti_spam = new anti_spam();
标签: WordPress
(php)25.WordPress访问统计
© Sunplace,2023
根据网上的灵感自己做了一个,省得伸手。
实现功能:
- 真实的独立访客统计(UV)
- 刷新页面不增加
- 用户登录不增加(目前用户为网站管理员)
is_user_logged_in()
- 直接访问不增加(直接在浏览器输入本站地址)
$_SERVER['HTTP_REFERER']==''()
数据库建表(建表语句):
# 举例用表,有wordpress数据库前缀"wp_" # wp_addsettings结构有些复杂,如果只需要一个表来保存UV的值可以更简单 # 我的数据表另有其用 CREATE TABLE `wp_addsettings` ( `id` int(11) NOT NULL AUTO_INCREMENT, `opname` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `opval` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; # 插入初始值 INSERT INTO `wp_addsettings` VALUES (1, 'uniquevisitor', '0');
页面代码(PHP),在模板的footer.php中加入:
<?php //将一个数字从低到高每隔三位加一个逗号 function numformat($num){ $num=strrev($num); $num=chunk_split($num,3,','); $num=strrev($num); $num=ltrim($num,','); return $num; } //使用session来记录访问数 session_start(); if(!is_user_logged_in()&&$_SERVER['HTTP_REFERER']!=''&&!isset($_SESSION['uv'])){ $_SESSION['uv']= 0; $uv++; $wpdb->update($wpdb->prefix.'addsettings',array('opval'=>$uv),array('opname'=>'uniquevisitor')); } echo '访客数(UV):'.numformat($uv); ?>
WordPress附加js报错
在WordPress代码中直接写入jQuery会提示以下错误(已经正确引用了jQuery):
TypeError: $ is not a function
需要修改一下:
(function($){ //原来的代码 })(jQuery);
WordPress翻译
© Sunplace,2016
1. 后台为显示为英文的处理方法
找到根目录下的wp-config.php,在末尾加入:
define('WPLANG', 'zh_CN');
随后进入后台,点击“更新”,下载安装包就好。
2. 网站显示英文的处理方法
找到wp-content/themes/你的主题名/languages里面的mo和po文件都是翻译文件。
2.1 下载任意一个po文件,使用Poeditord打开,修改译文后,保存。之后点击“文件”-“编译为MO…”保存为zh-CN.mo。
2.2 如果只有pot文件,请点击下方的“创建新的翻译”:
然后在要翻译的语言里填入zh-CN
3.自定义添加翻译
如果完成了上面几步的还是英文,那么就把整个主题目录下载到本地,利用浏览器“急速模式”或者是Google Chrome对英文位置右键,选择“审查元素”,配合Dreamweaver找到所在页面。
使用记事本打开zh-CN.po,在末尾加上:
#: [文件路径]:[待翻译的英文所在行号] msgid "[原文]" msgstr "[翻译后的文字]"
例子:
#: searchform.php:11 msgid "Search …" msgstr " "
tumblr和WordPress

由于之前我在万网免费得到一个云主机,于是就用来搭建了BLOG,接触php也没几天,看上了WordPress,算是慕名的吧。
WordPress和tumblr几乎没区别,硬要罗列的话,有:
tumblr优点:1. 对于小白,轻松搭建。2.维护方便,后台功能全面。3.服务器不在国内。
WordPress优点:1.容易定制。2.多语言。3.主题多,插件多。4.前端处理更丰富。
以上反之就是各自的缺点。
虽然我搭建有自己的WordPress,但技术方面的文章还是留在tumblr,主要担心被墙,听说tumblr打算进军中国,那只能对中国推出阉割版,同时墙掉国外版。至于为什么,当然是因为tumblr里面的NSFW。
为什么不用国外的主机?因为tumblr是国外的主机,还免费提供一个二级域名。但是WordPress自带的域名是被墙的,想要访问,只好上国内提供的域名(不一定是.cn),如果有所谓不良言论,直接XXXX。