Genesis框架从入门到精通(12): 配置项函数

2019-03-13 10:15:00 浏览数 (1)

Genesis Explained Option Functions

In the last post in the Genesis Explained series I explained the image functions for Genesis. In this post I’ll be going through the genesis/lib/functions/options.php file. There are technica…

Designs By Nick the Geek


在Genesis Explained系列的上一篇文章中,我解释了Genesis的图像函数 。在这篇文章中,我将介绍 genesis/lib/functions/options.php 文件。

这是完整的函数列表:

  • function genesis_get_option()
  • function genesis_option()
  • function genesis_get_seo_option()
  • function genesis_seo_option()
  • function genesis_get_cpt_option()
  • function genesis_cpt_option()
  • function genesis_custom_field()
  • function genesis_get_custom_field()
  • function genesis_save_custom_fields()
  • function genesis_update_settings()

前6个函数是关于主题配置选项的,实际上都是 genesis_get_option()的不同版本。最后一个函数是过滤器的一部分。

function genesis_get_option( $key, $setting = null, $use_cache = true )

该函数可以接受3个参数。第一个$key是必需的,标明要返回的选项值。例如,如果我想获取到管理后台里Genesis配置的“特色图片”的尺寸,那就要使用“image_size”作为$key。你可以在genesis /lib/admin/theme-settings.php文件中查找所有内置选项。

$setting 是可选参数. 默认是在GENESIS_SETTINGS_FIELD中查找。你还可以使用GENESIS_SEO_SETTINGS_FIELD来做一些其他的设置。你甚至可以创建自己的设置字段并使用此函数来获取该字段的值。

比如你在WordPress后台中设置了Genesis的一些配置:

如果想在自己的子主题中使用关于特色图像的一些选项,可以这样用:

genesis_get_option

你可以使用“ genesis_pre_get_option_key”来过滤选项,把key替换成你想要过滤的键名,比如你想要更改特色图像的大小,则可以先添加一个过滤去,再编写一个函数,让它在不同的情况下返回一个不同的值。如下:

genesis_pre_get_option_image_size

genesis_get_option函数在返回值之前还可有另一个过滤器 genesis_options,允许你过滤要返回的内容,可以使用 preg_replacestr_replace 更改从数据库查询后返回的值。 genesis_pre_get_option_$key对此不起作用,因为它会原样返回你设定的任何值而不会去查数据库。

genesis_option()完全相同,只是它会把genesis_get_option的返回值自动打印出来。

function genesis_get_seo_option( $key, $use_cache = true )

此函数与 genesis_get_option大致相同,不同之处在于它为 genesis_get_option函数提供了GENESIS_SEO_SETTINGS_FIELD, 可以获得到Genesis中对SEO的配置选项,用这个函数可以节省一些代码。 genesis_seo_option()会自动打印出来 genesis_get_seo_option返回的值。

function genesis_get_custom_field( $field, $post_id = null )

这个Genesis函数简化了WordPress的get_post_meta函数的使用方法。$field是必需的,是你要获取的自定义字段的名称,$post_id可以指定某一篇文章。genesis_custom_field()函数会自动打印出返回值。

举个例子,如果要在Genesis动作函数中获取文章的自定义字段,你需要使用WordPress函数:

WordPress的get_post_meta函数

使用这个Genesis函数可以简化这个步骤

Genesis函数genesis_get_custom_field

但有些时候你会不想使用这个函数。它不适用于数组值,因此如果你有多个具有相同名称的字段,则需要使用WordPress函数来获取一个对象(数组),然后你可以将其转换为可以输出的字符串。 genesis_custom_field函数还具有一些内置的安全检查,在返回值之前运行stripslashes() 函数和wp_kses_decode_entities() 函数,这可能会阻止某些代码正常工作。不过大多数情况下这不是问题,用genesis_get_custom_field 函数可以节省大量时间。

配置项的函数基本就这些了。下次我将介绍 genesis/lib/functions/widgetize.php 并总结一下Functions子系列。之后在Genesis Explained系列中有两部分内容,一是管理后台,将涵盖主题的配置选项和文章、分类项的信息等、(post / term meta),然后是CSS样式表。

注:

同样的原因,原文写作时间比较久远,里面有些例子和代码已经在Genesis最新版2.8中不合适了,所以对照最新代码改了一下,在原文基础上有删减,也有增加。

0 人点赞