wordpress开发微信小程序之问题总结-♚纪实阁付涛♚

wordpress开发微信小程序之问题总结

昨天突然想到,如果能在成熟的wordpress系统基础上,接入微信小程序会不会比微信公众号更有诱惑力呢;于是在网上查了下,不巧还真已经早就有了;花了两天时间自己也整理了一下整理好了,本站在微信小程序里面的运用;

微信小程序效果演示

小程序文件下载

此程序由【Jianbo-守望轩】达人所开发,本人非原创,只是一个使用消费者和信息传播者;

WordPress版微信小程序3.1.5版的新功能:

https://www.watch-life.net/wordpress/wordpress-weixin-3-1-5-update.html

配套WordPress插件:wp-rest-api-for-app 下载地址:
https://github.com/iamxjb/wp-rest-api-for-app

插件镜像下载地址:
https://github.com/iamxjb/wp-rest-api-for-app

如果需要赞赏支付功能 下载:
https://github.com/iamxjb/weixin-app-wxpay

小程序使用说明

1.WordPress 的版本有什么要求?
建议使用Wordpress 4.7 以上的版本,主要是因为从wordpress 4.7版本开始wordpress官方内置了rest api。如果你的网站的wordpress 是4.7版本以下,又不想升级,可以使用 rest api 的插件,插件的地址:https://wordpress.org/plugins/rest-api/, 但插件和官方内置的rest api 会略有不同,你需要修改小程序里里的api.js 文件才能正常使用。

【内容来源于:https://www.diebaosoft.com/】,未经授权,谢绝转载

2.json api 插件是否适用wordpress版小程序?
本小程序是基于官方的rest api 的基础上编写的,无法兼容json api插件,如果你使用的是json api,需要修改小程序里的api.js 文件,修改的方法是按json api请求方式来调整。

3.为什么我安装了最新的wordpress ,无法访问 rest api?
默认rest api 是无法直接访问的,会报出一个404无法找到该页的错误,要解决这个问题,需要做两个设置:

(1)在wordpress后台设置固定链接(permalink)。注意:请不要设置为“朴素”项。

(2) 设置wordpress 网站的url重写,也就是伪静态。

关于上面两个设置的详细内容见文章:WordPress版微信小程序开发系列(一):WordPress REST API

4.网站一定要支持https?
当然,这不是我的程序的要求,而是微信小程序的要求,如果不满足这个要求是无法在手机的微信里使用本小程序。

当然,如果你只是在开发工具的环境里调试程序,可以不用网站支持https。在小程序开发工具-设置-项目设置里选择 -不校验安全域名、TLS 版本以及 HTTPS 证书。

有关wordpress网站如果安装和设置https,你可以参考我写的一篇文章:WordPress整站轻松开启HTTPS

不过有一点要在强调下:只有http和https方式都可以访问的情况下,再去修改wordpress的后台的“WordPress地址(URL)”和 “站点地址(URL)”

注意:小程序要求的TLS 版本需要大于等于1.2版本。

5.为什么需要安装WordPress rest api 定制化插件?
主要是两个原因:

(1) 本小程序里有些功能,比如浏览数,点赞,赞赏等等功能是 wordpress rest api 无法提供的,于是我就在官方的rest api基础上做了定制,考虑到这是个开源的项目,我没有直接修改 rest api的函数,而是通过插件的方式来做定制化,这样可以保证兼容性,即使官方升级wordpress rest api ,也不会带来太大的影响,调整插件去兼容即可。

当然,插件的方式也给程序的开发带来了很大的工作量。

(2) 为了更好的使用小程序,我需要在wordpress 后台配置一些小程序所需的参数,比如分类封面 ,小程序的appid 和 appsecret 。

有关这个插件的使用和安装可以参考文章:

WordPress版微信小程序2.2.8版发布

WordPress版微信小程序2.1.5版发布

6.我通过WordPress rest api 定制化插件设置了appid和appsecret ,会不会有安全隐患?
放心,我的插件是开源的,我不会窃取你的appid和appsecret ,这两个东东都保存在你自己的wordpress数据库里,除非你的数据库被人黑了,才有可能泄漏。

另外,在赞赏中使用的微信支付,需要设置商户ID和密钥,也是在微信支付服务端程序里设置,我的程序不会保存,也不会通过什么手段传到我的服务器。

如果你实在不放心,就干脆别用这套程序了。:-)

7.为什么WordPress rest api 定制化插件安装失败?
目前插件程序我还没有上传到wordpress的官方,提供的也不是压缩可安装版本,因此需要你直接上传文件夹安装和启用。

8.WordPress rest api 定制化插件对php的版本有什么要求?
这个插件我是在php7.1的版本基础上开发的,不过考虑到向下兼容的,我测试过,最低支持 php5.3 ,如果低于这个版本,可能会出现不兼容问题。

php需要开启支持curl功能。

插件的下载地址:https://github.com/iamxjb/wp-rest-api-for-app

2018年1月31日更新:获取用户openid的代码我采用的微信官方的代码,其中的mcrypt_module_open()在php7.2版已经被移除了,因此保证插件正常使用,php的版本必须大于 php5.3 ,小于php7.2 。
2018年2月16日更新:支持php7.2版

2018年2月18日更新:为了支持生成海报图片,php必须开启GD和mbstring库扩展。

9.为什么我的小程序提示不能匿名评论?
一般来说,如果安装了WordPress rest api 定制化插件就不会出现这个提示,在WordPress rest api插件里开启了wordpress的匿名评论。

但你的wordpress 里设置了禁止匿名评论,或者有什么插件禁止匿名评论,也会提示匿名无法评论。

另外,开启rest api 匿名评论的功能会给wordpress网站带来一定的风险,因为有可能导致垃圾评论增加。这个作为站长要有心里准备。。

10.在回复评论的时候,如果去掉”@**:”字符后后提交评论就显示不是回复了,而是一条评论?
目前我的程序里,判断是否回复就是根据这个机制来判定的,如果你要修改这些字符,程序就没法判断到底是回复还是评论,于是程序就当作评论来处理了。因为考虑到,如果你突然不想回复,只是评论的话,就直接删除这些字符,直接评论了。
这里我还没想到更好的方法,去判断在你点发送的按钮的时候,是评论还是回复。

2017年12月15日:现在回复评论只需要在点击需要回复的评论文字,就可以直接回复文字了。如果没有输入文字,焦点离开评论框,评论框会自动变为评论状态,如果你在回复的时候输入了文字,会一直保持回复的状态,直到你删除回复的文字,焦点离开评论框,评论框就会恢复到评论状态。

11.为什么我的小程序的站内链接无法跳转?
坦白说,目前的站内链接还有很多不完善的地方,比如不支持“页面”和“tag”标签的跳转,只支持文章的跳转,同时由于wordpress里设置固定链接有不止一种方式,这给小程序站内链接的跳转程序编写带来了麻烦。

后续我会完善站内链接的相关程序。

12.为什么小程序需要获取用户的微信信息?
首先获取用户微信信息(包括昵称,头像,openid等)是在明确提示用户授权的情况下进行,获取这些信息是为了更好满足程序的需要,如果你觉得不安全或者不想授权,可以禁止授权,但会影响到小程序的使用,比如评论,点赞,赞赏等功能就都不能使用了。

这个授权,主要看你选择,你选择不授权,就意味着你放弃完整使用功能。

14.为什么我的小程序的“关于”页面无法显示。
“关于”页面的设置确实有点小难度,你可以打开config.js文件,在这个文件有一行这样的代码:

var ABOUTID= 1136; //wordpress网站关于页面的id
这行代码里的“1136”就是你wordpress网站里一个“页面”的id,至于这个id如何得到的,需要你自己去搜索答案,我就不赘述了。

15.为什么我的小程序按你的文档设置好了,小程序还是显示“暂时无法访问网络,下拉重试…”?
如果你完全我的文档都设置好了,还出现这个情况,可以在开发工具里打开调试器,在“Console”标签里会有相关的提示信息告诉你问题在那里。

如果你看不懂Console的错误提示,我也帮不了你了。

如果你完全按我的文档来设置的,小程序仍然显示“暂时无法访问网络,下拉重试…”,在调试器里的Console也没显示错误信息,这就是科学和宗教都没法解释的了,额,只能是人品问题了。 :-)

NANA主题使用此程序问题

此主题在使用中碰到了两个很奇葩的问题,而这两个问题问了N多人后,还是不得结果;最后自己无奈瞎捣鼓,竟然瞎狗碰死老鼠,竟然中了;不管是运气也好,还是啥也好,都整理下来供看到此文的朋友一个解决问题的思路与方法。

问题一:暂时无法访问网络,下拉重试

对于这个问题,一初是百思不得其解,更换NANA主题后,正常,能正常显示,可就是NANA主题无法使用;最后通过排除法终于找到问题的办法;修改方法如下:

在主题风格文件夹下找到:functions.php文件,并打开,然后在里面找到以下代码:

// 禁用oembed/rest
function disable_embeds_init() {
global $wp;
$wp->public_query_vars = array_diff( $wp->public_query_vars, array(
'embed',
) );
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
add_filter( 'embed_oembed_discover', '__return_false' );
remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );
add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
}
add_action( 'init', 'disable_embeds_init', 9999 );
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
function disable_embeds_tiny_mce_plugin( $plugins ) {
return array_diff( $plugins, array( 'wpembed' ) );
}
function disable_embeds_rewrites( $rules ) {
foreach ( $rules as $rule => $rewrite ) {
if ( false !== strpos( $rewrite, 'embed=true' ) ) {
unset( $rules[ $rule ] );
}
}
return $rules;
}
function disable_embeds_remove_rewrite_rules() {
add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'disable_embeds_remove_rewrite_rules' );
function disable_embeds_flush_rewrite_rules() {
remove_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, 'disable_embeds_flush_rewrite_rules' );
/**
*WordPress 4.6后禁止WordPress头部加载s.w.org
*http://boke112.com/3495.html
*/
function remove_dns_prefetch( $hints, $relation_type ) {
if ( 'dns-prefetch' === $relation_type ) {
return array_diff( wp_dependencies_unique_hosts(), $hints );
}
return $hints;
}
add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 );

删除以上内容后,小程序已经完全正常运行;

问题二:文章内容页图片无法正常显示

因为NANA主题自身原因,在处理编辑器内图片调用的时候,出现过滤不严导致在小程序截取时候出现BUG;在小程序文章详细页面内,无法正常显示图片而是被以代码形式直接输出,如下图所示:

经过对当前主题和原始模板对比发现如下异常:

【异常显示】

【正常显示】

 

问题处理办法:

打开主题模板文件下的functions.php第817行(在处理完第一个问题后的文件);或者直接搜索:

  1. if( count($match) < 1 )

改为:

  1. if( count($match) < 0 )

经过上方修改,图片就可以正常显示了;

至于其它,有问题请直接在文章后面留言咨询

本文由 ♚纪实阁付涛♚ 作者:谍豹云销 发表,其版权均为 ♚纪实阁付涛♚ 所有,文章内容系作者个人观点,不代表 ♚纪实阁付涛♚ 对观点赞同或支持。如需转载,请注明文章来源。

评论:

1 条评论,访客:0 条,站长:1 条

0%好评

  • 好评:(0%)
  • 中评:(0%)
  • 差评:(0%)

发表评论