更新说明:
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]
感觉越来越心动要购买了。呵呵。
水脉香烟威武啊