在本站之前的文章中,我介绍了 WordPess 开发插件 Piklist 的基本使用方法,今天为大家介绍一下使用 Piklist 插件添加主题设置选项的方法。首先,我们需要注册设置页面,然后是添加设置区域。Piklist 添加设置选项的功能基于标准的 WordPress 设置 API,并且在此基础上添加了一些更方便我们使用的特性。
首先,注册一个设置页面
和 Piklist 的其他功能一样,添加设置页面的操作就是创建一个简单的数组,然后把这个数组作为参数传递给相应的 Pikist 函数,把下面的演示代码添加到主题的 functions.php 中,就可以在后台外观菜单下看到一个设置页面了。
add_filter('piklist_admin_pages', 'piklist_theme_setting_pages');
function piklist_theme_setting_pages($pages)
{
$pages[] = array(
'page_title' => __('自定义设置')
,'menu_title' => __('设置', 'piklist')
,'sub_menu' => 'themes.php' //在外观菜单下面
,'capability' => 'manage_options'
,'menu_slug' => 'custom_settings'
,'setting' => 'my_theme_settings'
,'single_line' => true
,'default_tab' => '基本设置'
,'save_text' => '保存设置'
);
return $pages;
}
然后创建设置区域
现在,我们需要在主题中创建一个正确的文件夹结构,Piklist 使用该文章夹结构自动为我们创建相应的字段输入表单,该文件夹结构为“你的主题/piklist/parts/settings/设置文件”
这个文件夹中的每个文件将在设置页面创建一个设置区域,在一个设置页面中可以有多个设置区域,整个操作非常简单,下面我们将通过几个设置区域来具体演示一下。
创建设置文件,例如 demo-settings.php.
在这个文件的开头,是一个 PHP 注释块,用来控制该设置区域的表单,该注释块类似于标准的WordPress主题或插件的注释块,下面是必需的基本信息:
<?php
/*
Title: 主题设置
Setting:demo-setting
*/
此注释块告诉 Piklist 我们需要添加的设置区域的名字为“主题设置”,并且关联该设置区域到, “demo-setting”设置页面。
创建文本输入表单项:
piklist('field', array(
'type' => 'text'
,'field' => 'text'
,'label' => 'Text Box'
,'description' => 'Field Description'
,'help' => 'This is help text.'
,'value' => 'Default text'
,'attributes' => array(
'class' => 'text'
)
));
此数组将使用 WordPress 设置 API 自动创建一个文本表单输入框,‘type’ => ‘text’ 告诉了 Piklist 渲染哪种类型的表单项,可以看出,创建表单输入项的数组非常简单明了。相信有经验的程序员通过猜测就可以知道其他类型的表单输入项的创建方法了,在这里就不一一演示了,有兴趣的朋友可以自行尝试。
设置区域的完整代码:
/*
Title: 主题设置
Setting: demo_settings
*/
piklist('field', array(
'type' => 'text'
,'field' => 'text'
,'label' => '文本输入框'
,'description' => '文本输入框描述'
,'help' => '帮助文本'
,'value' => '默认文本'
,'attributes' => array(
'class' => 'text'
)
));
获取设置选项的值在主题中使用
在本文的开头,我们提到过,Piklist 使用的是默认的 WordPress 设置 API,所以我们可以直接使用 WordPress Option API 获取这些设置的值,示例如下:
<?php
$theme_options = get_option('my_theme_settings');
$text_field = $theme_options['text'];
$select_field = $theme_options['select'];
$colorpicker_field = $theme_options['colorpicker'];
echo '这是一个文本字段:' . $text_field;
?>