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_replace
或 str_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中不合适了,所以对照最新代码改了一下,在原文基础上有删减,也有增加。