4

微信自定义回复

更新说明:

2014年4月11日,新增“使用微信登录WordPress博客”,见下面第四条。

2013年7月31日,php菜鸟们,好消息,现在可以在“连接微信”插件直接自定义关键字回复(包括文本、图文、自定义图文、音乐等)。

2013年4月12日,新增“自定义文章搜索”,见下面第三条。

除了插件自定义的关键字,您还可以自己用php扩展,查看微信截图:


切记:所有的自定义代码,请复制到主题的functions.php文件,以免升级时被覆盖。

一、自定义搜索结果

当关键词没有找到,并且没有搜索到相关文章时,会返回结果,默认为 “很遗憾,没有找到相关内容,请换其它关键词试试。”,你可以自定义如下:

$weixin_custom_search_results = "您可以在这里自定义搜索结果";

也可以随机返回结果,给个参考:

$search_random_results = array('结果1',
	'结果2',
	'结果3',
	);
$weixin_custom_search_results = $search_random_results[rand(0, count($search_random_results) - 1)];

二、自定义关键词回复,搜索时返回文本内容,可以使用数组,也可以用动作:

1、数组,仅用于返回固定的文本内容。

$weixin_auto_reply = array('关键字1' => '回复1',
	'关键字2' => '回复2',
	'关键字3' => '回复3',
	);

2、高级自定义,可以返回固定的文本内容或者动态的内容。

自定义时不要忘记添加以下动作:

add_action('wx_auto_reply', 'wx_custom_auto_reply', 10, 3);

(1)、简单例子:

/**
 * $answer 回复,一般为空
 * $keyword string, 关键字
 * $postObj array, 微信返回的原始内容
 */
function wx_custom_auto_reply($answer, $keyword, $postObj) {
	switch ($keyword) {
		case "自定义关键词":
			return '自定义回复';
		case "Hello2BizUser": // 被关注时的欢迎词
			return WELCOME; // 写 WELCOME 将返回插件处设置的欢迎词
		case "最新文章": // 您可以把插件自定义的“最新文章”改成其他值
			return array('posts' => wx_get_recent_posts(10), 'title' => '最新文章', 'content' => '抱歉,没有新文章!');
		case "手气不错":
		case "随机文章":
			return array('posts' => wx_get_random_posts(3), 'title' => '随机文章', 'content' => '抱歉,没有文章!');
		default:
	} 
}

您可以借助$postObj参数扩展任意效果,$postObj字段请参考开放平台,注意:字段已经转为数组。如:

开发者微信号 变量为 $postObj[‘ToUserName’]
发送方帐号(一个OpenID) 变量为 $postObj[‘FromUserName’]

(2)、将关键词跟“文章分类”绑定,比如搜索“婚纱”,返回分类“婚纱摄影”下的最新文章,假设“婚纱摄影”的分类ID为12

提示:如何查看分类ID? wp后台 — 文章 — 分类目录,编辑要添加的分类,可以看到地址栏中有tag_ID=之后的数字就是分类ID (多个分类请用用英文逗号(,)分开)

$args 可以查看 wp_get_recent_posts

function wx_custom_auto_reply($answer, $keyword, $postObj) {
	switch ($keyword) {
		case "婚纱":
			$args = array('category' => "12");
			return array('posts' => wx_get_recent_posts($args), 'title' => '婚纱摄影', 'content' => '抱歉,没有新文章!');
		default:
	} 
}

(3)、搜索某个关键词时,返回自定义好的图文或者音乐

// 自定义图文,建议最多设置10条
function wx_custom_picture_posts() {
	$result = array();
	$result[] = array('title' => "标题", 'content' => "200字以内的简要描述", 'url' => "网址,记得加上http://", 'pic' => "来一张缩略图,记得加上http://");
	return $result;
} 
 
function wx_custom_auto_reply($answer, $keyword, $postObj) {
	switch ($keyword) {
		case "图文关键词":
			return array('posts' => wx_custom_picture_posts(), 'title' => '自己定义,一般不会显示', 'content' => '抱歉,没有新文章!');
		case "音乐关键词":
			return array('music' => array('title' => "歌名,可以不写", 'content' => "来点描述,歌词?也可以不写", 'url' => "音乐url,记得加上http://", 'HQ_url' => "高清音乐url,记得加上http://"));
		default:
	} 
}

(4)、如何匹配关键词?

上面讲到的关键词,都是固定的关键词,如果用户的关键词是“建议:xxxxx”,你想返回关键词“建议”的内容,应该怎么做?

以下代码仅供参考:

function wx_custom_auto_reply($answer, $keyword, $postObj) {
	// 匹配关键词
	$words = array("建议", "笑话");
	foreach ($words as $word) {
		$word = trim($word);
		$word = preg_quote($word, '#');
		$pattern = "#$word#i";
		preg_match($pattern, $keyword, $match);
		if ($match[0]) break;
	} 
	switch ($match[0]) {
		case "建议":
			return '已收到您的反馈,谢谢!';
		case "笑话":
			return array('posts' => wx_custom_picture_posts(), 'title' => '自己定义,一般不会显示', 'content' => '抱歉,没有新文章!');
		default:
	} 
}

三、自定义文章搜索

1、增加文章搜索指令

默认情况下,用户发一个关键字给微信公众帐号,会先找自定义的回复,没有找到会搜索Wordpress的相关文章,我能否自定义开头指令呢,如:
发送 “s 关键字” 给公众帐号才是搜索Wordpress的相关文章呢?答案是肯定的,接下来教你怎么自定义,请确保已经安装了专业版V3.2.2及以上版本。

function wx_custom_auto_reply($answer, $keyword, $postObj) {
	// 增加文章搜索指令,以下代码请放在最前面
	if (strpos($keyword, 's ') === 0) {
		$keyword = ltrim($keyword, 's ');
		return array('keyword' => $keyword); // 改变关键词搜索
	} 
	switch ($keyword) {
		case "Hello2BizUser": // 被关注时的欢迎词
			return WELCOME; // 写 WELCOME 将返回插件处设置的欢迎词
		case "最新文章": // 您可以把插件自定义的“最新文章”改成其他值
			return array('posts' => wx_get_recent_posts(10), 'title' => '最新文章', 'content' => '抱歉,没有新文章!');
		default:
	} 
	// 以下这句放在最后面,表示没有找到自定义的关键词时不回复,如不使用,请在前面加上注释 //
	return array('keyword' => md5('noreply'));
}

注意事项:

当你在最后面使用 return array(‘keyword’ => md5(‘noreply’)); 时,意味着插件默认设置的两个关键词“最新文章”和“Hello2BizUser” (被关注时的欢迎词)将失效,你需要在上面的switch语句自己添加,上面的关键词照抄即可。

2、自定义更适合网站的文章搜索

比如,我安装了WP-PostViews这个插件,用于统计文章阅读次数的,我想定义一个关键字“热门”,让它按文章阅读次数返回前5篇文章。

$args 可以查看 WP_Query,借助$args您可以做出任何想要的条件的结果。

// 关键字“热门”的搜索条件
function wx_post_views_and_hot($answer, $keyword) {
	$orderby = 'meta_value_num';
	$meta_key = 'views';
	$args = array('orderby' => $orderby, 'order' => 'DESC', 'meta_key' => $meta_key, 'posts_per_page' => 5);
	return $args;
} 
function wx_custom_auto_reply($answer, $keyword, $postObj) {
	switch ($keyword) {
		case "热门":
			add_action('wx_search_posts_args', 'wx_post_views_and_hot', 10, 2);
			return;
		default:
	} 
}

四、使用微信登录WordPress博客

1、目前仅支持微信服务号。切记:只有在微信客户端才会显示微信登录按钮。

2、必须安装WordPress连接微博专业版V3.5.2

详细请看这篇文章使用微信登录WordPress博客

function wx_custom_auto_reply($answer, $keyword, $postObj) {
	switch ($keyword) {
		case "register":
		case "login":
		case "注册":
		case "登录":
			return '点击<a href="' . plugins_url('wp-connect') . '/login.php?go=weixin">该处链接</a>可以快速登录或注册本站';
		case "bind":
		case "绑定":
			return wx_bindUser($postObj['FromUserName']);
		case "/del": // 解绑
			return wx_bindUser($postObj['FromUserName'], 1);
		default:
	}
}
function wx_login_required($text = '') {
	$url = plugins_url('wp-connect') . '/login.php?go=weixin';
	return $text . "您可以使用微信\n<a href='$url'>快速登录或注册本站</a>\n\n或者跟网站已有<a href='$url&act=wxbind'>帐号绑定</a>";
}
// 修改2015/5/16
function wx_bindUser($id, $unbind = 0) {
	$uid = get_connect_uid('weixin', $id);
	if ($uid > 0) {
		if ($unbind) {
			delete_connect_user($uid, 'weixin');
			do_action('delete_user_bind', $uid, 'weixin');
			return '已经解除绑定!';
		} else {
			return "您已绑定,\n可以发送【/del】解除绑定";
		} 
	} else {
		return wx_login_required();
	} 
} 
add_filter("wp_login_errors", "wp_login_errors_bind", 10, 1);
function wp_login_errors_bind($errors) {
	if (!empty($_GET['wxbind'])) {
		// $errors = new WP_Error();
		$errors -> add('wxbind', '登录网站后将引导您绑定微信。', 'message');
		return $errors;
	}
}

讲到这里,我相信你一定懂得定义了吧,如果你是代码盲请绕路,或者付费找我定制,呵呵!联系QQ: 3249892 在线咨询

自定义php代码汇总,仅供参考:

$weixin_custom_search_results = "您可以在这里自定义搜索结果";
// 添加动作
add_action('wx_auto_reply', 'wx_custom_auto_reply', 10, 3);
// 自定义图文,建议最多设置10条
function wx_custom_picture_posts() {
	$result = array();
	$result[] = array('title' => "标题", 'content' => "200字以内的简要描述", 'url' => '网址,记得加上http://', 'pic' => '来一张缩略图,记得加上http://');
	return $result;
} 
// 关键字“热门”的搜索条件
function wx_post_views_and_hot($answer, $keyword) {
	$orderby = 'meta_value_num';
	$meta_key = 'views';
	$args = array('orderby' => $orderby, 'order' => 'DESC', 'meta_key' => $meta_key, 'posts_per_page' => 5);
	return $args;
} 
// 自定义函数
function wx_custom_auto_reply($answer, $keyword, $postObj) {
	// 增加文章搜索指令,以下代码请放在最前面
	if (strpos($keyword, 's ') === 0) {
		$keyword = ltrim($keyword, 's ');
		return array('keyword' => $keyword); // 改变关键词搜索
	} 
	switch ($keyword) {
		case "自定义关键词":
			return '自定义回复';
		case "Hello2BizUser": // 被关注时的欢迎词
			return WELCOME; // 写 WELCOME 将返回插件处设置的欢迎词
		case "最新文章": // 您可以把插件自定义的“最新文章”改成其他值
			return array('posts' => wx_get_recent_posts(10), 'title' => '最新文章', 'content' => '抱歉,没有新文章!');
		case "手气不错":
		case "随机文章":
			return array('posts' => wx_get_random_posts(3), 'title' => '随机文章', 'content' => '抱歉,没有文章!');
		case "婚纱":
			$args = array('category' => "12");
			return array('posts' => wx_get_recent_posts($args), 'title' => '婚纱摄影', 'content' => '抱歉,没有新文章!');
		case "热门":
			add_action('wx_search_posts_args', 'wx_post_views_and_hot', 10, 2);
			return;
		case "图文关键词":
			return array('posts' => wx_custom_picture_posts(), 'title' => '自己定义,一般不会显示', 'content' => '抱歉,没有新文章!');
		case "音乐关键词":
			return array('music' => array('title' => "歌名,可以不写", 'content' => "来点描述,歌词?也可以不写", 'url' => "音乐url,记得加上http://", 'HQ_url' => "高清音乐url,记得加上http://"));
		case "register":
		case "login":
		case "注册":
		case "登录":
			return '点击<a href="' . plugins_url('wp-connect') . '/login.php?go=weixin">该处链接</a>可以快速登录或注册本站';
		case "bind":
		case "绑定":
			return wx_bindUser($postObj['FromUserName']);
		case "/del": // 解绑
			return wx_bindUser($postObj['FromUserName'], 1);
		default:
	} 
	// 匹配关键词
	$words = array("建议", "笑话");
	foreach ($words as $word) {
		$word = trim($word);
		$word = preg_quote($word, '#');
		$pattern = "#$word#i";
		preg_match($pattern, $keyword, $match);
		if ($match[0]) break;
	} 
	switch ($match[0]) {
		case "建议":
			return '已收到您的反馈,谢谢!';
		case "笑话":
			return array('posts' => wx_custom_picture_posts(), 'title' => '自己定义,一般不会显示', 'content' => '抱歉,没有新文章!');
		default:
	} 
	// 以下这句放在最后面,表示没有找到自定义的关键词时不回复,如不使用,请在前面加上注释 //
	return array('keyword' => md5('noreply'));
} 
function wx_login_required($text = '') {
	$url = plugins_url('wp-connect') . '/login.php?go=weixin';
	return $text . "您可以使用微信\n<a href='$url'>快速登录或注册本站</a>\n\n或者跟网站已有<a href='$url&act=wxbind'>帐号绑定</a>";
}
// 修改2015/5/16
function wx_bindUser($id, $unbind = 0) {
	$uid = get_connect_uid('weixin', $id);
	if ($uid > 0) {
		if ($unbind) {
			delete_connect_user($uid, 'weixin');
			do_action('delete_user_bind', $uid, 'weixin');
			return '已经解除绑定!';
		} else {
			return "您已绑定,\n可以发送【/del】解除绑定";
		} 
	} else {
		return wx_login_required();
	} 
} 
add_filter("wp_login_errors", "wp_login_errors_bind", 10, 1);
function wp_login_errors_bind($errors) {
	if (!empty($_GET['wxbind'])) {
		// $errors = new WP_Error();
		$errors -> add('wxbind', '登录网站后将引导您绑定微信。', 'message');
		return $errors;
	}
}

相关插件:
[cref 53]
[cref 120]

购买 WordPress连接微信

已有 0 用户参与0
0 : 0
+1已打分
分享到:
已有 4 条评论
  1. 感觉越来越心动要购买了。呵呵。
    水脉香烟威武啊

    2015年10月21日 08:28来自新浪微博 回复
  2. 海滨稻香skating

    要留着,先学习一下~~

    2014年11月11日 20:10来自新浪微博 回复
  3. 好!

    2014年3月14日 19:59来自腾讯微博 回复
  4. 791725644

    专业啊,原来是个技术博客

    我的网站:人民币战士

    2013年3月27日 18:27 回复