我正在创建一个主题选项页面,我为其构建此页面的用户希望能够直接从此页面编辑一些设置,包括站点标题和标语。
在brasofilo, 我有以下。。。
/inc/options-framework.php:
/**
* Validate Options.
*
* This runs after the submit/reset button has been clicked and
* validates the inputs.
*/
function optionsframework_validate( $input ) {
/* code */
$clean[$id] = apply_filters( \'of_sanitize_\' . $option[\'type\'], $input[$id], $option );
/* code */
options.php:
$options[] = array(
\'name\' => __(\'Input Text Mini\', \'options_framework_theme\'),
\'desc\' => __(\'A mini text input field.\', \'options_framework_theme\'),
\'id\' => \'blogname\',
\'std\' => \'Default\',
\'class\' => \'mini\',
\'type\' => \'text\');
$options[] = array(
\'name\' => __(\'Input Text\', \'options_framework_theme\'),
\'desc\' => __(\'A text input field.\', \'options_framework_theme\'),
\'id\' => \'blogdescription\',
\'std\' => \'Default Value\',
\'type\' => \'text\');
functions.php:
add_filter( \'of_sanitize_text\', \'wpse_77233_framework_to_settings\', 10, 2 );
function wpse_77233_framework_to_settings( $input, $option )
{
if( \'blogname\' == $option[\'id\'] )
update_option( \'blogname\', sanitize_text_field( $input ) );
if( \'blogdescription\' == $option[\'id\'] )
update_option( \'blogdescription\', sanitize_text_field( $input ) );
return $input;
}
如果用户在主题选项页面中添加自己的博客名/网站标题和博客描述/标语,然后单击保存按钮,它将相应地将信息输出到网站前端,并更新WP API设置>常规菜单中每个文本字段中的信息。
Theme Options:
Settings > General:
但是,如果用户以其他方式进行任何更改(在WP API设置常规菜单中),信息将输出到网站前端,但不会更新选项框架/主题选项页面中的字段。
由于我对PHP相当陌生,而且这一切都是如何工作的,我想知道我如何才能以另一种方式工作呢?