前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Genesis框架从入门到精通(1):什么是框架?

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

作者头像
丘壑
发布2019-03-13 10:52:15
9500
发布2019-03-13 10:52:15
举报
文章被收录于专栏:一丘一壑一丘一壑

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
Genesis Explained: Your Step-by-Step Guide to Genesis
Genesis Explained: Your Step-by-Step Guide to Genesis 

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 框架是什么?
    • 译后记:
      • Genesis Explained: Your Step-by-Step Guide to Genesis 
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档