专栏首页一丘一壑Genesis框架从入门到精通(1):什么是框架?

Genesis框架从入门到精通(1):什么是框架?

WordPress主题框架Genesis的工作原理可能会让很多人感到困惑不解,这导致开发者在开始用Genesis框架时可能会一脸蒙逼,无所适从。

在开发传统的主题时,如果想自定义修改日志页面,可能首先就去会去找single.phppage.phpindex.php这个几个文件,然后先把主要部分的代码复制到新文件中去。但是在Genesis框架中,类似其他主题中这些文件并一定都存在,即使存在,里面也只包含一行代码,比如:

在子主题中,可能只有一个 style.css 和一个functions.php文件。functions.php 中可能也只有一行代码,用一点代码就能让主题的外观和感觉产生很大变化,对开发人员来说也很容易维护和修改。

通过Genesis框架能更高效的编写代码,不过你必须得清楚地理解一些基本概念才行。所以,我希望能通过这个系列教程,来帮助你用Genesis框架快速开发主题或修改子主题。

框架是什么?

Gesesis是一个主题框架,你可以把它想象成乐高积木或其他类似玩具。它有一个可以用来组装各种零件的平台,这些零件都可以拆卸或移动。有些零件只能安装在特定的地方,而有些零件几乎可以安装到任何位置。

既然要使用Genesis,那么基础平台就是不能替换的了,所以让我们来了解一下这个平台。

这是framework.php文件,是3个最基本的最不能更动的文件之一。实际上,不光是这个文件,所有Genesis核心代码文件都不要动,不要编辑。所有的开发工作都应该在子主题内进行,Genesis核心代码的任何改动都会在升级时被自动覆盖。

所有一切都是从genesis()函数开始的。genesis()函数几乎在每个标准模板文件中都会调用。这个函数负责输出本该写在模板文件里的代码。在顶部和底部应该是两个比较眼熟的函数get_header()get_footer(), 它们会加载 header.php 文件和footer.php 文件。这两个也是不能修改的文件,它们构成了Genesis框架的核心平台。

在 header 和 footer 之间是 html 代码的封装代码和通过 do_action() 函数指明的“钩子”。do_action() 函数的作用是用“钩子(hook)”把需要执行的动作函数(action)“勾入”到Wordpress中,用来执动作函数中的代码。

这个文件中有7个“钩子”,分别会把不同的动作函数“勾入”wordpress中。我将在稍后解释什么是动作函数,现在让我们先简单的总体看一下Genesis里典型的“钩子”的结构和加载过程。

以下是“钩子”加载顺序的简化版,最开始的就是加载框架自身的钩子:

  • genesis_pre
  • genesis_pre_framework
  • genesis_init
    • header.php
      • genesis_title
      • genesis_meta
      • genesis_before
      • genesis_before_header
      • genesis_header
        • genesis_site_title
        • genesis_site_description
      • genesis_after_header
    • framework.php
      • genesis_before_content_sidebar_wrap
      • genesis_before_content
      • genesis_before_loop
      • genesis_loop
        • genesis_before_post
        • genesis_before_post_title
        • genesis_post_title
        • genesis_after_post_title
        • genesis_before_post_content
        • genesis_post_content
        • genesis_after_post_content
        • genesis_after_post
          • genesis_before_comments
          • genesis_comments
          • genesis_list_comments
          • genesis_before_pings
          • genesis_pings
          • genesis_list_pings
          • genesis_after_pings
          • genesis_before_comment
          • genesis_after_comment
          • genesis_before_comment_form
          • genesis_comment_form
          • genesis_after_comment_form
        • genesis_after_endwhile
        • genesis_loop_else
      • genesis_after_loop
      • genesis_after_content
        • genesis_sidebar
          • genesis_before_sidebar_widget_area
          • genesis_after_sidebar_widget_area
        • genesis_sidebar_alt
          • genesis_before_sidebar_alt_widget_area
          • genesis_after_sidebar_alt_widget_area
      • genesis_after_sidebar_content_wrap
    • footer.php
      • genesis_before_footer
      • genesis_footer
      • genesis_after_footer
      • genesis_after

Genesis Visual Hook Guide

在这里也可以看到Genesis的钩子的总体结构 的在线演示 https://genesistutorials.com/visual-hook-guide/ 

太多了,各种”钩子”。每个“钩子”都可以将其他函数“勾入”进来以便添加一些功能。只需几行代码就可以移动网站的各个部分。动作函数将在下次再讲。接下来,我还会讲解如何阅读Genesis的代码,以便快速定位到需要复制到子主题的部分。

如果你现在看不太明白也不要担心,本系列会一步步地把Genesis框架解释清楚,本次基础教程也将让你更容易理解下次的内容。


译后记:

原文地址:https://designsbynickthegeek.com/tutorials/genesis-explained-the-framework

作者 Nick Croft 是 Genesis 非常早期的贡献者和核心开发者,写过不少Genesis插件,也是一个全职的Genesis自由顾问。教程还是挺权威的,也是Genesis官方推荐过的。作者也把文章整理成书出版了,在Amazon上卖的,最新版本更新到2018了,一致都是好评。

他博客上的这个系列文章已经很早了,2011年….8年前了,中间有不少东西可能都不准确了,最新版的书我还没有拿到,不知道里面内容的内容相对于博客有多少更新。。。但好在我看了下那本书的目录和博客上的差别不大,就只好一边对照博客文章一边对照代码在看了,如果碰到有些太旧的东西就改一下,不一定会和原文一样,尽量和最新版Genesis的靠拢。

Genesis Explained: Your Step-by-Step Guide to Genesis 

英文原版的,英文好的朋友可以先买来看看

亚马逊购买链接

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Genesis框架从入门到精通(13): 小部件函数

    Genesis Explained系列中的上一篇文章是关于配置项函数的,并演示了一些用于从数据库中检索自定义字段和主题选项的重要函数。本文是关于 genesis...

    丘壑
  • Genesis框架从入门到精通(11): 图像函数

    Genesis Explained Image Functions

    丘壑
  • Genesis框架从入门到精通(7): 框架的过滤器

    Genesis Explained Framework Filters

    丘壑
  • 网络安全之在Kali Linux上安装Openvas

    本文目录:   一、解决和配置更新源问题   二、安装Openvas   三、自定义登陆密码   四、升级Openvas    五、查看Openvas运行情况 ...

    Jetpropelledsnake21
  • 重磅:如何玩转kylin

    1, kylin是什么?为什么需要? Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持...

    Spark学习技巧
  • 5种云计算安全基础知识和最佳实践

    将业务迁移到云端的企业必须承担新的责任,开发新的技能,并实施新的流程。而改善云计算的安全性的第一步是假设没有安全性。

    CloudBest
  • Eclipse下Hadoop的MapReduce开发之mapreduce打包

    点击next,使用默认选择,再点击next,在最下面的Main class处选择项目里的MapReduceTest

    尚浩宇
  • MovingAverage-滑动平均

    MovingAverage可翻译为滑动平均或移动平均,是做时间序列预测时用到的简单方法。 计算方法:对于一个给定的数列,首先设定一个固定的值k,然后分别计算...

    MachineLP
  • 我们分析了25782件Bra,发现了中国女性内衣的秘密

    导读:爬取了25782件京东商城在售的女性内衣,和总计10655条在京东商城购买过女性内衣的购买者评论,试图探究中国女性的内衣消费情况和背后的消费心理。

    华章科技
  • python (1)

       Utf-8:  可变长度编码,英文字符用一个字节存储,中文用三个字节存储,硬盘中存储。

    py3study

扫码关注云+社区

领取腾讯云代金券