之前奶爸分享过3种实现博客公众号引流的方法,其中就包括使用关键词回复获取密码的插件,不过那个插件的验证码是站长手动输入的,今天给大家推荐的这款是自动生成和获取验证码,实现验证码自动更换引流的功能。
插件代码如下:
<?php
/*
Plugin Name: 微信公众平台验证码查看插件
Plugin URI: https://gitcafe.net/
Description: 微信公众平台验证码可见插件,接口地址为:域名?wxcaptcha ,其实随便
Version: 1.0
Author: 云落
Author URI: https://gitcafe.net/
*/
// 此token必须和微信公众平台中的设置保持一致
define('WX_TOKEN', '');
define('WX_QR', '');//公众号二维码
// 以下内容不需要改动
/*** 微信端开始 ***/
class Wechat_Captcha {
function __construct($wx_captcha) {
$this->captcha = $wx_captcha;
}
private function checkSignature() {
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = WX_TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if ($tmpStr == $signature)
return true; else
return false;
}
protected function valid() {
$echoStr = $_GET["echostr"];
//valid signature , option
if ($this->checkSignature()) {
echo $echoStr;
exit;
} else {
echo 'error signature';
}
}
public function responseMsg() {
//如果是验证请求,则执行签名验证并退出
if (!empty($_GET["echostr"])) {
$this->valid();
//验证签名是否有效
return;
//返回退出
}
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
echo '';
return;
}
//如果不是验证请求,则
//首先,取得POST原始数据(XML格式)
//$postData = $GLOBALS["HTTP_RAW_POST_DATA"];
$postData = file_get_contents('php://input');
if (empty($postData)) {
echo '';
return;
}
//如果没有POST数据,则退出
if (!empty($postData)) {
//解析POST数据(XML格式)
$object = simplexml_load_string($postData, 'SimpleXMLElement', LIBXML_NOCDATA);
$messgeType = trim($object->MsgType);//取得消息类型
$this->fromUser = "" . $object->FromUserName;
$this->toUser = "" . $object->ToUserName;
$keyword = trim($object->Content);
if( $messgeType == 'text' && $keyword == '验证码') {
$response_content = '您的验证码为:【'.$this->captcha.'】,验证码有效期为2分钟,请抓紧使用,过期需重新申请';
$xmlTemplate = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%d</FuncFlag>
</xml>";
$xmlText = sprintf($xmlTemplate, $this->fromUser, $this->toUser, time(), $response_content, 0);
echo $xmlText;
}
} else {
echo "";
exit;
}
}
}
//class end
//生成微信验证码
function wx_captcha(){
date_default_timezone_set('Asia/Shanghai');
$min = floor(date("i")/2);
$day = date("d");
$day = ltrim($day,0);
$url = home_url();
$captcha = sha1($min.$url.WX_TOKEN);
$captcha = substr($captcha , $day , 6);
return $captcha;
}
function wx_process() {
global $object;
$object = new Wechat_Captcha(wx_captcha());
$object->responseMsg();
return;
}
add_action('pre_get_posts', 'wx_process', 4);
/*** 微信端结束 ***/
/*** WP端开始 ***/
//密码可见
function wx_captcha_view() {
$action = $_POST['action'];
$post_id = $_POST['id'];
$pass = $_POST['pass'];
$wxcaptcha = wx_captcha();
if(!isset( $action ) || !isset( $post_id ) || !isset( $pass ) ) exit('400');
if($pass == $wxcaptcha ) {
$pass_content = get_post_meta($post_id, '_pass_content')[0];
exit($pass_content);
}else{
exit('400');
}
}
add_action('wp_ajax_nopriv_gdk_pass_view', 'wx_captcha_view');
add_action('wp_ajax_gdk_pass_view', 'wx_captcha_view');
// 部分内容输入密码可见
function gdk_secret_view($atts, $content = null) {
$pid = get_the_ID();
add_post_meta($pid, '_pass_content', $content, true) or update_post_meta($pid, '_pass_content', $content);
if ( current_user_can( 'administrator' ) ) { return $content; }//admin show
return '<link rel="stylesheet" id="pure_css-css" href="https://cdn.jsdelivr.net/npm/css-mint@2.0.7/build/css-mint.min.css?ver=0.0.1" type="text/css"/>
<div class="cm-grid cm-card pass_viewbox">
<div class="cm-row">
<div class="cm-col-md-4">
<img src="'.WX_QR.'" class="cm-resp-img">
</div>
<div class="cm-col-md-8">
<div class="hide_content_info" style="margin:10px 0">
<div class="cm-alert primary">本段内容已被隐藏,您需要扫码关注微信公众号申请验证码查看,发送【验证码】获取验证码,验证码2分钟有效</div>
<input type="text" id="pass_view" placeholder="输入验证码并提交" style="width:70%"> <input id="submit_pass_view" class="cm-btn success" data-action="gdk_pass_view" data-id="'.$pid.'" type="button" value="提交">
</div>
</div>
</div>
</div>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery@2.1.0/dist/jquery.min.js?ver=2.1"></script>
<script>
function show_hide_content(a, b) {
$(a).hide();
$(a).after("<div class=\"cm-alert success\">" + b + "</div>");
}
/**
* 点击开启密码可见
*/
$("#submit_pass_view").click(function () {
var ajax_data = {
action: $("#submit_pass_view").data("action"),
id: $("#submit_pass_view").data("id"),
pass: $("#pass_view").val()
};
$.post("'.admin_url( 'admin-ajax.php' ).'", ajax_data, function (c) {
c = $.trim(c);
if (c !== "400") {
show_hide_content(".pass_viewbox", c);
localStorage.setItem("gdk_pass_" + ajax_data["id"], c); /**隐藏内容直接存入浏览器缓存,下次直接读取,ps.有个问题,内容更新会略坑,不管了 */
} else {
alert("您的密码错误,请重新申请");
}
});
});
/**
* 已经密码可见的自动从浏览器读取内容
* 并显示,这里加个延时处理
*/
(function () {
if ($("#submit_pass_view").length > 0) { /**如果网站有密码可见,就执行 */
setTimeout(function () {
var id = "gdk_pass_" + $("#submit_pass_view").data("id"),
length = localStorage.length;
for (var i = 0; i < length; i++) {
var key = localStorage.key(i),
value = localStorage.getItem(key);
if (key.indexOf(id) >= 0) { /*发现目标 */
show_hide_content(".pass_viewbox", value);
break;
}
}
}, 900);
}
}());
/**密码可见end */
</script>
';
}
add_shortcode('wxcaptcha', 'gdk_secret_view');
//按钮
function wx_captcha_btn() {
?>
<script type="text/javascript">
QTags.addButton( 'wxcaptcha', '微信公众号验证码可见', '[wxcaptcha]', '[/wxcaptcha]\n' );//快捷输入标签
</script>
<?php
}
add_action('after_wp_tiny_mce', 'wx_captcha_btn');
/*** WP端结束 ***/你需要配置的地方就两处:
// 此token必须和微信公众平台中的设置保持一致
define('WX_TOKEN', '');
define('WX_QR', '');//公众号二维码一个是wx_token,在微信公众号管理后台可以获取,另外一个就是你公众号的二维码图片地址。
使用方法:
1、下载并安装插件
2、修改插件的wx_token和wx_qr的值。
3、发文章使用短代码[wxcaptcha]和[/wxcaptcha]把需要隐藏的内容包裹起来。
作者发布地址:https://gitcafe.net/archives/10584.html

评论已关闭
本文的评论功能已关闭,如有问题欢迎通过其他方式联系我们。