文章分类: WordPress

独立建站利器,中小型网站简单解决方案

WordPress一次列出当前文章/页面的所有自定义字段

WordPress中最重要的活用就是自定义字段,它几乎涉及到了一切现有的业务模块,无论你是电商网站还是用户社区,自定义字段无处不在。有时候我们需要在别人现成的代码或主题里面挖一些资料,进行再开发。那么就需要知道特定的页面上究竟可以有哪些字段资源可用。

还是用我们熟悉的get_post_meta命令,但是这次只给一个参数,就能调出所有的自定义字段了:

1
2
3
4
$myvals = get_post_meta($post_id);
foreach($myvals as $key=>$val){
    echo $key . ' : ' . $val[0] . '<br/>';
}

就是这么简单!

给Gravity Forms表单的电话号码增加11位手机号码格式

Gravity Forms提供了强大的表单系统,但是它的电话号码格式却没有11位手机号码的格式,虽然我们可以用International这个选项代替(就是不限制格式),但终归不够完美。查了一下官方文档,把这个需求给填上吧。

直接上代码:

add_filter( 'gform_phone_formats', 'brain1981_phone_format' );
function brain1981_phone_format( $phone_formats ) {
	$phone_formats['china mobile'] = array(
		'label'       => '手机号码',
		'mask'        => false,
		'regex'       => '/^1(?:3\d|4[4-9]|5[0-35-9]|6[67]|7[013-8]|8\d|9\d)\d{8}$/', //手机号码正则
		'instruction' => "11位手机号码",
	);
	return $phone_formats;
}

查看详细 »

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

置顶信息:这些年来我们已经积累了几十家客户,一百多个由我们独立完成的项目案例。团队虽小,能量却很大。不同于个人的单打独斗,我们一直把JennyStudio作为一家正规公司运营着,把每一个项目当作自己的孩子一样培育。

长期承接外包项目,若你有WordPress相关的建站需求,微信小程序开发需求、H5页面设计制作需求,请移步JennyStudio

WordPress自定义字段的几个钩子以及相关用法

在WordPress中如果要更新某个自定义字段,只需要用到函数update_post_meta()就可以了。在执行update_post_meta的时候,WP会查找到你要更新的字段,如果没有符合条件的字段,WP会用add_post_meta添加新的字段,不用人工写判断,很方便。
使用add_post_meta添加新字段时,如果添加了参数$unique为true,WP会查找有没有相同键名(meta_key)的字段,如果有,则不会添加任何东西。
删除自定义字段delete_post_meter也不需要预先判断有无字段,如果没有该字段,delete_post_meter会返回false值。
相关文档:
https://codex.wordpress.org/Function_Reference/add_post_meta
https://codex.wordpress.org/Function_Reference/update_post_meta
https://codex.wordpress.org/Function_Reference/delete_post_meta
查看详细 »

解决WordPress admin-ajax.php 500 (Internal Server Error)报错的大致思路

经常摆弄各种WordPress插件的人,对admin-ajax.php 500报错应该是不陌生的。表症就是在Console栏里看到如下报错。

用Ajax提交数据的插件,出现这类报错曾经让我很容易抓狂,因为它不直接输出PHP代码错误位置,你无法从这种报错中看出到底是哪个插件,哪行代码出的问题。老手应该知道,500报错都是可以从PHP报错日志找线索的。
查看详细 »

WordPress用REST API避免微信小程序中数据加载超过长度限制

今天在开发小程序的过程中发现一个旧的项目在加载了几十条文章数据后,就再也无法继续加载了,微信开发工具中报错“invokeWebviewMethod 数据传输长度为 1957855 已经超过最大长度 1048576”
微信小程序中数据加载超过长度限制

这是由于微信小程序规定页面的data对象最大只能装载1M的数据,而我的数据源都是很长的文章,在加载了50篇左右就超过1M了。显然用WordPress默认的REST API格式是无法突破这个瓶颈了。于是就要想办法修改API,在要加载大量文章的列表页中,把文章正文内容去掉,就能减少90%的数据量,反正列表页也不需要显示正文;只在文章详细页上加载当前文章的所有数据。

首先是去掉默认API的文章详细内容,并且删除掉一些觉得没用的字段: 查看详细 »

WooCommerce的虚拟物品订单付款后自动处理订单状态

这应该是一个比较常见的功能需求了,虚拟物品由于不需要进行送货,用户付款后即可算作订单完成,以便网站统计订单后进行更多操作,用户也可能籍此获得一些其他的优惠或者权益。这一切都需要前一个订单在没有人工干预的状态下自动完成。

首先,官方文档中给出了直接完成订单的代码:

1
2
3
4
5
6
7
8
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order');
function custom_woocommerce_auto_complete_order( $order_id ) {
     if ( ! $order_id ) {
         return;
     }
     $order = wc_get_order( $order_id );
     $order->update_status( 'completed' );
}

查看详细 »

Linux主机下WordPress网站无法使用中文站内搜索问题解决

三年前我还在捣鼓用Win主机装WordPress建站的时候,碰到过站内无法使用中文搜索的问题,还记录了一篇笔记,在 这里。自从换了Linux主机后,就再也没有为这个问题发愁过,然而在更新过N次WordPress版本后,最近发现这个问题在Linux主机上居然又重现了。症状就是用英文站内搜索正常,用中文就只会跳到404页,搜索不到任何东西。404返回的搜索关键词是正确的,并未出现乱码,因此可以肯定和之前用Win主机的情况是不一样的。 查看详细 »

WordPress Rest API 学习笔记(一)

接到一个需求,要把公司的一个酒店行业的WordPress网站里的几百家酒店数据导出为CSV文件,以便其他开发人员把它转成需要的格式开发APP。觉得这是一个比较笨的需求,WP是一套十分便捷的CMS,用WP后台管理这些酒店数据很容易,但对方是要拿静态的CSV文件,转格式后,就要导入另一套不如WP好用的后台。同一套数据两边分别管理,实在是浪费人力。我们为什么不能直接通过WordPress后台同时管理网站和APP数据呢?

由这个切入点,让我想起了WP REST API,从最近发布的WP的4.7版开始,已经官方支持REST API,不需要安装任何插件了。这也是现在的技术趋势,使得WordPress不再局限于PHP语言,能够导出JSON数据被任何其他开发语言和平台所使用。

REST API的基本概念就是直接把网站数据通过类似
http://yourdomain.com/wp-json/wp/v2/posts/
http://yourdomain.com/wp-json/wp/v2/pages/
这样的URL转成JSON
这个URL可以再定义得细一些,比如 查看详细 »

定制WooCommerce的用户地址页以符合国内用户使用习惯

接上一篇 定制WooCommerce的账户详情(用户资料)页,增加自定义字段,修改默认字段 后,本文记录一下如何修改WooCommerce用户中心的edit-address以及购买商品结帐页面的字段。所有修改还是为了符合国内用户的书写习惯,把姓名合并成一个字段,去掉email字段,把地址栏从2行变成1行。
修改之前是这样的:
定制WooCommerce的用户地址页以符合国内用户使用习惯 修改前
首先是去掉lastname、city和address_2这些没必要的字段 查看详细 »