公众号涨粉

博客引流公众号自动生成验证码:微信公众平台验证码查看插件

之前奶爸分享过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%"> &nbsp;&nbsp;<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

滚动至顶部