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

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

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

按ctrl+shift+p打开插件列表,搜索Install Package,等待软件搜索仓库信息(在底部状态栏有提示)。等加载完毕后,再搜PackageResourceViewer,并选中间那个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的写法就会变得很臃肿且不易维护了。我们就需要给每个运费添加一个自定义的描述字段,实现后台管理描述,方便运维人员自己去修改运费设置。 查看详细 »

阿里云企业邮箱用于网站邮件SMTP的正确设置方法

我有不少客户是在阿里云注册的域名并购买的邮箱,写这篇文章是为了提醒大家,如果你的网站需要用自己的企业邮箱作为发件箱,务必需要正确设置自己的邮箱。

首先,如果你和我一样是用WordPress建站,通过Gravity Forms或CF7这些表单插件发件的,可以看一下我很久以前的这篇文章: WordPress以及表单插件Gravity Forms和Contact Form 7无法发送邮件问题解决。这篇文章告诉你在网站后台如何正确的设置SMTP邮箱服务。但是假如作为发信源头的邮箱本身没有设置好SMTP服务,那么网站后台即使设置正确了,也是没有效果的。

如果你用的是阿里云的企业邮箱,无论是免费版还是付费版本,都需要看一下这里。首先,注册完企业邮箱后,系统会自动生成一个名为“postmaster”的账号:
查看详细 »

WordPress后台开发,无插件增加一键复制文章页面功能

这次要实现的功能是在WordPress后台的文章列表中,添加一键复制文章的按钮。完整地复制一篇文章,除了要复制文章内容外,还要复制文章所有的分类信息和关联字段,这是复制功能的核心。另外要实现这个功能还要带上一些后台的交互,为了避免不小心点到这个按钮徒增不必要的数据,还需要做个二次确认框,效果是这样的。
WordPress后台开发,无插件增加一键复制文章页面功能

先要通过post_row_actions钩子增加一个”Duplicate”按钮(其实是个链接)

1
2
3
4
5
6
7
function brain1981_duplicate_post_link( $actions, $post ) {
	if (current_user_can('edit_posts')) {
		$actions['duplicate'] = '<a href="###" data-url="'. wp_nonce_url('admin.php?action=brain1981_duplicate_post&post=' . $post->ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Duplicate it" rel="permalink" class="duplicate-trigger">Duplicate</a>';
	}
	return $actions;
}
add_filter('post_row_actions', 'brain1981_duplicate_post_link', 30, 2 );

查看详细 »