我正在尝试学习如何在WordPress中制作自定义仪表板页面和设置 . 我所遵循的教程非常清楚......但是有一件非常小的事情对我来说没有意义 .
在 demo_footer_message_display()
函数的 funcions.php 底部附近有一行代码,表示 option['message']
. 我不明白“消息”的定义 . 如果它说选项['footer_message']会有很多意义,因为'footer_message'是我正在处理的字段的id .
代码工作正常,但我只是不明白为什么? 'message'在哪里被定义为options数组的索引 . 任何人都可以向我解释这个吗?
PS . 如果不明显我的设置页面只有一个输入,您可以在主题的页脚中输入一些文本 .
functions.php
<?php
/ * -------------------------------------------- *
*菜单
/ * * --------------------------------------------- /
//将“DEMO THEME OPTIONS”添加到WordPress的“设置”菜单中
function demo_add_options_page(){
add_options_page(
'Lindsay演示主题选项',//浏览器 Headers
'Lindsay演示主题选项',//菜单文字
'manage_options',//用户访问此菜单所需的功能
'lindsay-demo-theme-options',// slug
'demo_theme_option_display'//用于显示内容的函数名称
);
}
add_action('admin_menu','demo_add_options_page');
/ * -------------------------------------------- *
*部分,设置和字段
/ * * --------------------------------------------- /
//在“演示主题选项”页面上注册新的设置字段
function demo_initialize_theme_options(){
//要在新选项页面上呈现的部分
add_settings_section(
'footer_section',// id
'页脚选项',//屏幕上的 Headers
'demo_footer_options_display',//回调
'lindsay-demo-theme-options'//页面ID
);
//定义设置字段
add_settings_field(
'footer_message',//字段ID
'主题页脚消息',//标签
'demo_footer_message_display',//回调
'lindsay-demo-theme-options',//页面
'footer_section'//要添加的部分
);
//使用“常规”部分注册“footer_message”设置
register_setting(
'footer_section',//设置组的名称
'footer_options'//选项名称
);
} //结束demo_initialize_theme_options
add_action('admin_init','demo_initialize_theme_options');
/ * -------------------------------------------- *
*回调
/ * * --------------------------------------------- /
function demo_theme_option_display(){
?>
<div class =“wrap”> <h2>演示主题选项</ h2> <form method =“post”action =“options.php”> <?PHP //渲染标识为“页脚部分”的设置部分的设置 settings_fields( 'footer_section');
//渲染“demo-theme-options”部分的所有设置
do_settings_sections(“林赛 - 演示主题选项”);
//添加提交按钮以序列化选项
submit_button();
?>
</ FORM>
</ DIV>
<?PHP
}
function demo_footer_message_display(){
$ options =(array)get_option('footer_options');
$ message = $ options ['message'];
echo'<input type =“text”name =“footer_options [message]”id =“footer_options_message”value =“' . $ message . '”/>';
}
function demo_footer_options_display(){
echo'这些选项旨在帮助您控制页脚中显示的内容';
}
footer.php
<div id="footer" class="col-md-12">
<?php wp_footer() ?>
<div class="site-info">
<a href="http://wordpress.org/" title="A Semantic Personal Publishing Platform" rel="generator">Proudly Powered by WordPress</a>
<span class="sep"> | </span>
<?php $options = (array) get_option('footer_options');?>
<?php $message = $options['message'];?>
<span id="footer-message"><?php echo $message; ?></span>
</div>
</div>
1 回答
如果你在方法get_option之前查看单词(数组),它会显示他将返回作为数组进行转换(这篇文章说it's a serialised string) . 设置api也表示get_option的返回类型是"mixed" . 我猜这个表单是发布在选项页面上呈现的文本字段,保存从帖子到数据库的所有内容,当你检索它时,更容易将它转换为数组以检索帖子的"message"部分 . 尝试取消它并使用"var_dump"查看它返回的内容,看看你是否能提出比我更好的答案:)
http://codex.wordpress.org/Settings_API