上海WordPress网站建设、微信小程序开发、H5页面设计制作

置顶文章:这些年来我们已经积累了几十家客户,两百多个由我们独立完成的项目案例。JennyStudio作为一家正规建站公司,团队虽小,能量却很大,我们把每一个项目当作自己的孩子一样培育。长期承接外包项目,若你有WordPress相关的建站需求,微信小程序开发需求、H5页面设计制作需求,请移步JennyStudio上海网站建设

我们尤其专长基于WordPress的各种类型的网站开发,和大部分靠WordPress吃饭的公司不同的是: 查看详细 »

WordPress后台开发,无插件添加列表页快速编辑(Quick Edit)自定义字段

这次的文章标题有点拗口,其实用一张图概括就是这样的:
WordPress无插件添加列表页快速编辑(Quick Edit)自定义字段

在文章列表页,点击“快速编辑”,展开的选项栏叫做快速编辑栏。我们可以把一些经常要修改的文章字段放到快速编辑栏里,这样就可以在列表页直接修改这些字段,而不用进入下级的文章页了,可以从而节约时间。 查看详细 »

WooCommerce微信小程序开发,为Rest API补充图片信息

WooCommerce微信小程序开发使用WooCommerce的原生Rest API,接口中是缺少一些必要的图片信息的,这里列举两个地方:

1. 产品接口中,所有的产品图片都只有原图URL,没有带上thumbnail和其他WordPress生成的尺寸

通常商店管理员并没有太多图片的优化意识,会直接把多达几M的产品图上传。WooCommerce的主题多半会生成一些必要的小尺寸图片分别给产品列表以及购物车等地方加载,但Rest API中并不会有这些信息。微信小程序的产品列表页也是需要这些小图的,于是我们需要在接口中把这些小尺寸产品图也加入进去: 查看详细 »

Sublime Text修改边栏Sidebar的字体大小

这几年我写代码的工具一直都是Sublime Text,这两天给自己的电脑换了一台27寸的4k屏显示器,本想着一屏可以多显示几行代码,还能同时多窗口并列,这样写起代码来因该会很舒服。然而并没有那么简单,现在27寸并不是什么大尺寸显示器,在3840分辨率下,操作系统界面都显得非常“袖珍”,用起来很费眼睛。于是我只能把系统字体调成了150%,解决了大部分软件的界面字体问题。

这里的大部分,就没包括Sublime Text。Sublime Text的代码部分,可以通过Ctrl + +/-灵活调节字体大小,然而左边的文件列表就不行了。于是搜了一下修改方式,这里做个记录。

按ctrl+shift+p打开插件列表,搜索Install Package,等待软件搜索仓库信息(在底部状态栏有提示)。等加载完毕后,选中间那个Open Resource。

查看详细 »

给WordPress的dashicons添加自定义图标

Dashicon是WordPress本身自带的一套图标系统,它满足了WordPress后台对小图标的需求,但也仅仅是满足了WP自身的后台使用而已。为了避免不必要的冗余,WordPress官方也并没有打算把它打造成一套丰富的图标,而是把这个空间留给了开发者和设计师。如果你开发的插件需要在WP的后台新建菜单,或者你的网站有着各种自定义的Post类型,那么你可能就需要添加自己的图标了,毕竟,WP自带的图标库中,去掉WP正在使用的那些,可选的真是不多。

生成新的Dashicon,可以借助一个网站 – Glyphter。网站本身就提供了一些图标给你添加,这些图标都是开源的,可以免费使用,其中就包含了Font Awesome以及众多其他有名的图标库:
给WordPress添加自定义Dashicon - Glyphter的图标库 查看详细 »

WordPress项目 – WooCommerce微信小程序定制开发


最近上线的一个项目:WooCommerce定制微信小程序。基于之前的WordPress的网站(也是由我开发)后端,利用WordPress和WooCommerce的扩展能力,定制了小程序使用的API;小程序的前端则是从无到有的独立开发。能对WooCcommerce做到这样的定制扩展的建站商非常少,我们的技术优势在此项目中得到了充分体现。
查看详细 »

WooCommerce购物车对象使用以及方法函数概括

WooCommerce二次开发中,经常会需要对购物车进行改造,甚至有时候会需要重写购物车页面,所以就有必要把WooCommerce的购物车提供的接口方法做一下整理。本文对我在最近的一些项目中使用过的方法进行简要的记录。

首先,在调用任何购物车方法之前,先要检查当前页面环境对购物车对象是否可用:

1
2
3
4
if ( is_null( WC()->cart ) ) {
wc_load_cart();
}
WC()->cart->get_cart();

常用的条件函数,返回true/false

1
2
3
4
5
6
7
8
9
10
//检查购物车是否有商品
WC()->cart->is_empty();
//检查购物车是否需要付费,如果费用为0则返回false
WC()->cart->needs_payment();
//检查购物车中是否已经记录收货地址
WC()->cart->show_shipping();
//检查是不是需要寄送(用于计算运费的情况)
WC()->cart->needs_shipping();
//检查是不是有折扣,如果后台减了价格,这里会返回true
WC()->cart->has_discount();

查看详细 »

WooCommerce Rest API开发微信小程序和APP等第三方应用的鉴权方式

最近忙于自己开发基于WooCommerce的微信小程序。在决定自己研发之前,我也调查过国内已有的他人研发的WooCommerce微信小程序,对各家的产品Demo分别进行了试用后,还是决定自己从0开发一套小程序。从无到有的过程必然是一项浩大的工程,但经历一下这个过程还是很有必要的。首先,我们开发的项目100%自己掌握代码修改是最基本的要求。目前市面上已有两款第三方开源WooCommerce微信小程序,但都只是部分开源,且给出的源代码甚至不能直接跑通,使用这些开源代码做二次开发会很“受制于人”。考虑到自己也需要长期深耕定制小程序,需要随心所欲地扩展功能和设计,作为开发者就必须对项目的每一行代码都有本质理解。要达到对一个系统有本质理解的程度,最快的方法并不是去读别人的代码,而是自己写一套出来。恰好手头的一个项目给了我2个月时间,以我对WooCommerce的了解,是有信心独立完成小程序的开发的。目前项目开发已完成,点击这里可以查看案例,今后会不定期分享一些零碎的经验心得。

基于WooCommerce的Rest API开发第三方应用,首先要解决用户鉴权问题,这里要分两种情况:
1. 用户未登录
2. 用户已登录
查看详细 »

使用GoAccess分析Nginx日志,LNMP环境安装部署最快步骤

使用Nginx的服务器进程会碰到流量异常,被各种扫描的现象。这时候我们就需要对服务器的访问日志进行分析,我的一台LNMP服务器Nginx日志为/home/wwwlogs/access.log,有100多M,文本打开后基本不能用肉眼看到多少有效信息,需要一款日志分析工具的帮助,最好能有图表化功能。目前开发者推荐最多的日志分析工具是GoAccess,这里记录一下安装和部署步骤。

首先跑去 GoAccess官方 找到最新版和安装方法
登录服务器,运行以下命令:
$ wget https://tar.goaccess.io/goaccess-1.5.6.tar.gz
$ tar -xzvf goaccess-1.5.6.tar.gz
$ cd goaccess-1.5.6/
$ ./configure --enable-utf8 --enable-geoip=mmdb
$ make
# make install

查看详细 »

给WooCommerce的运费(Shipping Method)增加自定义描述字段

如果一个WooCommerce网站存在多种不同的运费(Shipping Method),则可能有必要让用户在运费选择的模块中了解不同运费的区别。你可以解释运输的时长,或者解释价格的构成等,总之就是提供更多信息帮助用户做出最好的选择。比如在这里,我就对每个运费添加了时长的解释:

一个便捷的办法是通过以下代码实现的:

add_filter('woocommerce_cart_shipping_method_full_label', 'brain1981_custom_shipping_method_label', 10, 2);
function brain1981_custom_shipping_method_label( $label, $method ){
	$txt = "";
	if( $method->id=="flat_rate:1" || $method->id=="free_shipping:4" ){
		$txt = 'In 15 Business days';
	}else if( $method->id=="flat_rate:2" || $method->id=="free_shipping:3" ){
		$txt = '7-10 Business days';
	}
	return $label . '<br /><small>' . $txt . '</small>';
}

需注意的是,WooCommerce的运费ID的格式都是以这样的形式呈现的:
flat_rate:1
free_shipping:2

以上这段代码就是事先辨认出这些运费ID,通过woocommerce_cart_shipping_method_full_label这个钩子在运费的标题后面增加一小段描述。如果你的运费数量不多且比较固定,这段代码就足够用了。

那么如果一个网站有很多种运费,并且经常会修改运费种类,上面这种hard codding的写法就会变得很臃肿且不易维护了。我们就需要给每个运费添加一个自定义的描述字段,实现后台管理描述,方便运维人员自己去修改运费设置。 查看详细 »