Woo主题的框架很灵活,想其主题选项(theme options)中添加自定义的选项可以通过插件完成,本文演示如何添加选项。
目录
Woo主题选项定义方法
Woo主题选项定义在includes/theme-options.php中,下载一款免费woo主题,打开这个文件可以看到如下结构。
$options = array();
$options[] = array("name" => "General Settings",
"type" => "heading",
"icon" => "general");
$options[] = array("name" => "Custom Logo",
"desc" => "Upload a logo for your theme, or specify an image URL directly.",
"id" => $shortname . "_logo",
"std" => "",
"type" => "upload");虽然主题选项看起来是选项卡式的,好像存在父子关系,但代码中无论是选项卡标题还是具体的选项,都是平级关系,只是具有不同的type,$options是一个简单的二维数组。
添加一个新的选项卡
添加一个名为Custom Settings的选项卡,内置一个简单的文本框选项
function woo_options_add($options){
$shortname = 'woo';
$options[] = array( "name" => "Custom Settings",
"type" => "heading",
"icon" => "general" );
$options[] = array(
'desc' => 'Input your tracking code',
'id' => $shortname . '_trackingcode',
'std' => '',
'type' => 'textarea'
);
return $options;
}该选项卡会添加到所有选项卡末尾,若要添加到开头,可以这样
function woo_options_add($options){
$shortname = 'woo';
$array[0] = array( "name" => "Custom Settings",
"type" => "heading",
"icon" => "general" );
$array[1] = array(
'desc' => 'Input your tracking code',
'id' => $shortname . '_trackingcode',
'std' => '',
'type' => 'textarea'
);
array_unshift( $options, $array[1]);
array_unshift( $options, $array[0]);
return $options;
}向选项卡中插入自定义选项
现在要向General Settings中添加一个选项,方法如下
function woo_options_add($options){
$shortname = 'woo';
$array = array();
while(list($key, $value) = each($options)){
if ( $value['name'] == 'General Settings' ) {
$array[] = $value;
$array[] = array("name" => __('Tracking Code', 'woothemes'),
"desc" => __('Input tracking code', 'woothemes'),
"id" => $shortname . "_trackingcode",
"std" => '',
"type" => "textarea");
} else {
$array[] = $value;
}
}
return $array;
}