复选框,单选和选择类型选项使用户可以从一组预定义的选项中进行单个选择。 当您需要为最终用户提供多种选择的能力时,该怎么办?
这正是Titan框架中的multicheck
type选项所执行的操作。 今天,我打算展示如何通过Titan框架在自定义管理面板,元框或主题定制器中添加多选类型选项。
Titan Framework中的多重检查类型选项
一个multicheck
泰坦框架类型选项允许您创建可全部启用或同时禁用多个复选框。 看起来是这样的:
该选项支持的设置参数为:
- 名 :此参数分配的显示名称
multicheck
类型选项。 - id :这是一个唯一名称,用于检索保存的选项值。
- desc :添加带有选项名称的简短描述。
- default :(可选)此参数具有默认情况下启用的值数组。
- options :(可选)这是一个关联数组,其中包含显示为复选框的选项的“ 值-标签”对。
最后两个参数default和options是array
,其余两个参数按类型是string
。
Multicheck Type选项的可用容器
您可以在其中添加此选项的容器是:
- 管理面板
- 管理员标签
- 元框
- 主题定制器部分
所述multicheck
类型选项由以下的一般格式中加入:
- 通过
getInstance()
函数获取实例。 - 通过
createOption()
函数创建一个选项。 - 通过
getOption()
函数获取保存的值。
是否想了解如何使用Titan Framework创建这些容器? 阅读本系列的前几篇文章。
在管理面板中创建多重检查类型选项
声明示例
首先,让我们在管理面板中创建此选项。
<?php
/**
*
* Create multicheck type option in an Admin Panel
*
*/
$aa_panel->createOption( array(
'id' => 'aa_multicheck_opt', // The ID which will be used to get the value of this option
'type' => 'multicheck', // Type of option we are creating
'name' => 'My Multicheck Option', // Name of the option which will be displayed in the admin panel
'desc' => 'This is our option', // Description of the option which will be displayed in the admin panel
'options' => array( // Associative array of value-label pairs containing options
'aa_hdr_logo' => 'Show Header Logo',
'aa_hdr_bg_img' => 'Show Header Background Image',
'aa_hdr_clr_overlay' => 'Allow Header Color Overlay'
),
'default' => array( 'aa_hdr_logo', 'aa_hdr_bg_img' )
) );
我用了createOption()
在行#8功能添加multicheck
在自定义管理面板类型选项$aa_panel
。 我已经提到了一个参数列表,即名称,id,类型,选项,desc和default 。 我的选项的ID是aa_multicheck_opt
; 确保您添加的每个ID都是唯一的。
第14行的' options'参数占用一个关联数组。 它包含值标签对。 每对表示一个单独的选项,显示为一个复选框。 因此,我定义了三个值标签对,这意味着三个选项 。
每个选项的标签都是唯一的。 因此,标签aa_hdr_logo
, aa_hdr_bg_img
和aa_hdr_clr_overlay
创建了名为“ Show Header Logo ”,“ Show Header Background Image ”和“ Allow Header Color Overlay ”的选项。
在上面的截图中,有一个管理面板整洁选项包含一个multicheck
名为My Multicheck option选项。 请注意,由于默认设置(我在第16行设置),因此启用了前两个选项。
用法示例
让我们获取保存的选项值。
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( 'neat' ); // we will initialize $titan only once for every file where we use it.
// 2. Get the value via ID using getOption function
$aa_multicheck_opt_val = $titan->getOption( 'aa_multicheck_opt' );
/**
*
* Printing saved values for an Admin Panel
*
*/
var_dump($aa_multicheck_opt_val);
在第3行中,我通过getInstance()
函数添加了一个唯一实例。 建议在此处使用主题名称作为参数。 然后在第6行中,我通过将选项ID aa_multicheck_opt
注册为参数,使用了getOption()
函数(用于检索保存的值)。 之后,我将其结果保存到变量$aa_multicheck_opt_val
。 至此,用户输入设置保存在该变量中。
现在,我们将在前端打印保存的结果。 由于此选项占用一个关联数组,因此我将使用最基本的方法来打印数组内容,即var_dump()
命令(第15行)。
如果预览前端,则如下所示:
默认设置打印完全正确。 您将了解使用此选项可以做什么。
让我们添加一些代码行,如果设置是动态更改的,这些代码将输出输出。 我用这些行替换了上面代码的第15行。
<?php
if ( in_array( 'aa_hdr_logo', $aa_multicheck_opt_val ) ) {
echo "Show Header Logo was enabled.</br>";
} else {
echo "Show Header Logo was not enabled.</br>";
}
if ( in_array( 'aa_hdr_bg_img', $aa_multicheck_opt_val ) ) {
echo "Show Header Background Image was enabled.</br>";
} else {
echo "Show Header Background Image was not enabled.</br>";
}
if ( in_array( 'aa_hdr_clr_overlay', $aa_multicheck_opt_val ) ) {
echo "Allow Header Color Overlay was enabled.</br>";
} else {
echo "Allow Header Color Overlay was not enabled.</br>";
}
?>
在这里,我在if-else
检查语句中使用in_array()
函数。 这里对输出执行三种不同的检查。
第2至6行:
- 如果数组
$aa_multicheck_opt_val
aa_hdr_logo
存在标签aa_hdr_logo
, 则启用$aa_multicheck_opt_val
Header Logo。 ' - 否则, 未启用 “ 显示页眉徽标 ”打印。 '
第7至11行:
- 如果数组
$aa_multicheck_opt_val
aa_hdr_bg_img
存在标签aa_hdr_bg_img
, 则启用 print' 允许标题颜色覆盖。 ' - 否则,打印' 允许标题颜色覆盖未启用。 '
第13至17行:
- 如果数组
$aa_multicheck_opt_val
aa_hdr_clr_overlay
存在标签aa_hdr_clr_overlay
, 则启用$aa_multicheck_opt_val
Header Background Image。 ' - 否则, 未启用 “ 显示标题背景图像 ”打印。 '
在前端显示结果
让我们首先使用默认设置,即启用前两个复选框。
前端必须打印如下几行:
在管理标签内创建多检查类型选项
声明示例
接下来,我将在管理标签中添加此选项。
<?php
/**
*
* Create multicheck type option in an Admin Tab
*
*/
$aa_tab1->createOption( array(
'id' => 'aa_multicheck_opt_in_tab', // The ID which will be used to get the value of this option
'type' => 'multicheck', // Type of option we are creating
'name' => 'My Multicheck Option', // Name of the option which will be displayed in the admin panel
'desc' => 'This is our option', // Description of the option which will be displayed in the admin panel
'options' => array( // Associative array of value-label pairs containing options
'aa_hdr_logo' => 'Show Header Logo',
'aa_hdr_bg_img' => 'Show Header Background Image',
'aa_hdr_clr_overlay' => 'Allow Header Color Overlay'
),
'default' => array( 'aa_hdr_logo', 'aa_hdr_bg_img' )
) );
在这里,我在admin标签$aa_tab1
添加了相同的multicheck
type选项。 该选项的唯一ID为aa_multicheck_opt_in_tab
。 其余参数设置相同。
管理面板“ 整洁选项2”的 选项卡1内存在一个multicheck
type选项。
用法示例
现在,我将从管理选项卡中获取保存的值。
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( 'neat' ); // we will initialize $titan only once for every file where we use it.
// 2. Get the value via ID using getOption function
$aa_multicheck_opt_in_tab_val = $titan->getOption( 'aa_multicheck_opt_in_tab' );
/**
*
* Printing saved values for an Admin Tab
*
*/
if ( in_array( 'aa_hdr_logo' , $aa_multicheck_opt_in_tab_val ) ) {
echo "Show Header Logo was enabled.</br>";
} else {
echo "Show Header Logo was not enabled.</br>";
}
if ( in_array( 'aa_hdr_bg_img' , $aa_multicheck_opt_in_tab_val ) ) {
echo "Show Header Background Image was enabled.</br>";
} else {
echo "Show Header Background Image was not enabled.</br>";
}
if ( in_array( 'aa_hdr_clr_overlay' , $aa_multicheck_opt_in_tab_val ) ) {
echo "Allow Header Color Overlay was enabled.</br>";
} else {
echo "Allow Header Color Overlay was not enabled.</br>";
}
这段代码与我在管理面板中编写的代码非常相似。 您可以自己尝试。 让我总结一下步骤:
- 首先,通过
getInstance()
函数在第3行中获取一个实例。 - 然后使用
getOption()
函数在第6行中获取保存的值。 - 注册选项ID并将结果保存在变量
$aa_multicheck_opt_in_tab_val
。 - 最后,在
in_array()
函数(第15至30行in_array()
使用此变量以打印所需的结果。
在前端显示结果
让我们启用所有复选框作为我的演示设置。 前端看起来像这样:
在元框内创建多检查类型选项
声明示例
现在,我将在一个metabox中创建一个multicheck
type选项。
<?php
/**
*
* Create multicheck type option in a Metabox
*
*/
$aa_metbox->createOption( array(
'id' => 'aa_multicheck_opt_in_metabox', // The ID which will be used to get the value of this option
'type' => 'multicheck', // Type of option we are creating
'name' => 'My Multicheck Option', // Name of the option which will be displayed
'desc' => 'This is our option', // Description of the option which will be displayed
'options' => array( // Associative array of value-label pairs containing options
'aa_hdr_logo' => 'Show Header Logo',
'aa_hdr_bg_img' => 'Show Header Background Image',
'aa_hdr_clr_overlay' => 'Allow Header Color Overlay'
),
'default' => array( 'aa_hdr_logo', 'aa_hdr_bg_img' )
) );
我在$aa_metbox
添加了具有唯一ID aa_multicheck_opt_in_metabox
此选项。
在上图中,有一个页面编辑屏幕,最后,您可以发现一个名为“ 我的multicheck
选项”的多重检查选项。 在metabox中。
用法示例
使用以下代码检索保存的值。
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( 'neat' ); // we will initialize $titan only once for every file where we use it.
// 2. Get the value via ID using getOption function
$aa_multicheck_opt_in_metabox_val = $titan->getOption( 'aa_multicheck_opt_in_metabox', get_the_ID() );
/**
*
* Printing saved values for a Metabox
*
*/
if ( in_array( 'aa_hdr_logo', $aa_multicheck_opt_in_metabox_val ) ) {
echo "Show Header Logo was enabled.</br>";
} else {
echo "Show Header Logo was not enabled.</br>";
}
if ( in_array( 'aa_hdr_bg_img', $aa_multicheck_opt_in_metabox_val ) ) {
echo "Show Header Background Image was enabled.</br>";
} else {
echo "Show Header Background Image was not enabled.</br>";
}
if ( in_array( 'aa_hdr_clr_overlay', $aa_multicheck_opt_in_metabox_val ) ) {
echo "Allow Header Color Overlay was enabled.</br>";
} else {
echo "Allow Header Color Overlay was not enabled.</br>";
}
?>
该代码再次使用该函数来获取实例和保存的值。 但是在第6行中,还有一个附加参数get_the_ID()
函数,该函数从任何页面或帖子的ID中获取值。 最后,我使用了相同的if-else
检查语句。
在前端显示结果
这次,让我们启用第一个和最后一个选项。 这是前端的屏幕截图。
在主题定制器部分中创建多检查类型选项
声明示例
最后,我将在主题定制器部分中添加此选项。
<?php
/**
*
* Create multicheck type option in a Theme Customizer Section
*
*/
$aa_section1->createOption( array(
'id' => 'aa_multicheck_opt_in_sec', // The ID which will be used to get the value of this option
'type' => 'multicheck', // Type of option we are creating
'name' => 'My Multicheck Option', // Name of the option which will be displayed
'desc' => 'This is our option', // Description of the option which will be displayed
'options' => array( // Associative array of value-label pairs containing options
'aa_hdr_logo' => 'Show Header Logo',
'aa_hdr_bg_img' => 'Show Header Background Image',
'aa_hdr_clr_overlay' => 'Allow Header Color Overlay'
),
'default' => array( 'aa_hdr_logo', 'aa_hdr_bg_img' )
) );
我在主题定制器部分$aa_section1
添加了multicheck
type选项。 它的ID是aa_multicheck_opt_in_sec
。
在图像中,有一个名为My Section的定制程序部分,其中有一个复选框选项列表。
用法示例
使用此代码从定制程序部分获取值。
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( 'neat' ); // we will initialize $titan only once for every file where we use it.
// 2. Get the value via ID using getOption function
$aa_multicheck_opt_in_sec_val = $titan->getOption( 'aa_multicheck_opt_in_sec' );
/**
*
* Printing saved values for a Customizer Section
*
*/
if ( in_array( 'aa_hdr_logo' , $aa_multicheck_opt_in_sec_val ) ) {
echo "Show Header Logo was enabled.</br>";
} else {
echo "Show Header Logo was not enabled.</br>";
}
if ( in_array( 'aa_hdr_bg_img' , $aa_multicheck_opt_in_sec_val ) ) {
echo "Show Header Background Image was enabled.</br>";
} else {
echo "Show Header Background Image was not enabled.</br>";
}
if ( in_array( 'aa_hdr_clr_overlay' , $aa_multicheck_opt_in_sec_val ) ) {
echo "Allow Header Color Overlay was enabled.</br>";
} else {
echo "Allow Header Color Overlay was not enabled.</br>";
}
?>
此代码再次与我用于其他容器类型的代码非常相似。 仅ID和变量名称不同。
在前端显示结果
我只启用了第一个选项。 可以在实时预览模式下观察到这些更改:
结论
就是这样。 您可以将multicheck
type选项集成到您的Web开发项目中,以允许用户单击几下即可启用多个主题功能。
记住,我在复选框类型选项的教程中为您提供了一个示例,您可以允许最终用户启用/禁用single.php的任何部分。 可以在上下文中应用相同的示例。 因此,如果要提供与特定区域(例如标题)相关的用户选项,则应使用多重检查来避免使用其他选项。
还有一些其他选项类型可以称为此类型的派生类型。 我将在以后的文章中讨论它们。 然后尝试本教程,并在评论中或Twitter上告诉我您的观点。