越是老的经久不衰的系统,越是会存在非常多的惊喜。

这话放在wordpress(以下简称wp)上更是贴切!三五年前在我告别了百度空间后,其实就已经开始使用wp当博客系统了。只可惜那时候的我能力还有限(其实就是懒),从没有好好研读过wp的架构和代码。

这段时间需要将公司的形象网站重构,经领导的推荐,最终决定要基于wp来做!那么总算有了解她的理由了!

简单的gg了一下,海量的教程,皮肤,插件。可见其生态环境还是依然不错,尽管最近几年不少轻量级博客系统的诞生,但似乎并没有对wp造成太大的影响,尤其是在针对一些比较复杂需求的企业站开发时,wp的强大就体现出来了。

作为新手,这篇文章会记录下我的学习过程,作为我个人的记忆存根,如果对你有帮助,那真是让我非常荣幸~

wordpress的要点

随着我对wp的了解,目前感觉到它的核心要点有以下几点:

wordpress的小惊喜

子主题下覆盖原主题的shortcode

这个必须在子主题的functions.php中如下定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
add_action( 'after_setup_theme', 'my_ag_child_theme_setup' );
function my_ag_child_theme_setup() {
remove_shortcode( 'divider' );
add_shortcode( 'divider', 'my_ag_divider' );
}
function my_ag_divider( $atts, $content = null ) {
extract(shortcode_atts(array(
), $atts));
$out = '<div class="divider"><h2><span>'.do_shortcode($content).'</span></h2></div>';
return $out;
}

上述方案参考这里

子主题下覆盖wordpress默认widget

这里

彻底关闭post下面的comment

不管网上你搜到什么样的教程教你实现这个需求,最简单的还是安装“disable comments”插件。

创建page template

只需要在你的主题文件夹下建立模版文件,然后在模版文件顶部添加下面的注释即可:

1
2
3
/*
Template Name: My Custom Template
*/

设置自定义url后导致403

首先你要保证你开启了apache的rewrite模块,然后在你配置的虚拟主机环境下设置下面两项:

1
2
Options Indexes FollowSymLinks
AllowOverride All

nginx下就很简单了,按照这里教的做就可以了。

Contact Form 7 下的邮件发送问题

目前我用的这套theme,需要激活Contact Form 7 插件,这个插件就是用来生成像“联系我们”的表单的,不同于wp的comments在于,可以使用自定义的语法来自定义你需要的表单项,并通过发送mail到指定邮箱来通知管理员的。

自定义表单项我没咋搞,这里主要说一下邮件发送的问题,花了我一天的时间,痛苦死了。默认该插件会使用wp自带的wp_mail()来完成邮件发送,但奇怪的时,wp后台并没有给出smtp配置的地方。从一些文档上看貌似是需要你的主机支持邮件功能的(具体我也没深究,总之就是我本地环境下不行)。按照网上的推荐,我安装了另一个插件:Postman SMTP。这样意味着可以将CF7的邮件发送托管给postman来做,不过奇怪的是我本地环境下cf7就是无法使用postman,看了不少文档也没有头绪。奇迹发生在我将项目部署在阿里云服务器以后,一切都正常了!阿西吧~

正在执行例行维护 请一分钟后回来

遇过你碰见这个问题,请参考这里

多国语言

由于我司直接购买的商用theme,其自带了ACF5PRO,那我们要如何做多语言功能呢,现成的插件组合:

这样你的网站就可以摇身一变成为多语言站点了。其中需要注意的是,custom filed的多语言,acf qTranslate插件只提供了下面几种类型:

  • text
  • textarea
  • WYSIWYG

这就需要你取舍了,像我原本还使用了ACF的true/false类型,也只能想办法用text表示了。

手把手

不是我夸,老外就是屌,早有牛人出了系列教程,教你如何不写一行代码完成wp建站:教程

最后推荐的神器

朋友强烈推荐给我的一个基于wp的牛逼框架:themosis,据说用上它以后,你将改变宇宙的格局。