您发布的代码具有major flaw*: 它混合了HTML和PHP,但没有将它们正确地分开。这个代码块有一个PHP函数调用,后跟一个HTML字符串,但由于没有任何信息告诉文件应该将其视为HTML,解析器会说“嘿,<form
我什么都认不出来。我要离开这里!“”
*几乎每个人在使用PHP和HTML时都会遇到这种情况
这里的违规代码是
// adding the page to menu
add_menu_page(\'Theme Options\', \'Theme Options\', \'manage_options\', \'rm-options\', \'rm_display_options_page\');
// form to display options
<form method="post" action="options.php">
<?php
settings_fields(\'rm_theme_options\'); // options name
do_settings_sections(\'rm-options\'); // page
submit_button();
?>
</form>
这里有几个选项,一个是告诉PHP
echo
HTML如下所示:
// adding the page to menu
add_menu_page(\'Theme Options\', \'Theme Options\', \'manage_options\', \'rm-options\', \'rm_display_options_page\');
// form to display options
echo \'<form method="post" action="options.php">\';
settings_fields(\'rm_theme_options\'); // options name
do_settings_sections(\'rm-options\'); // page
submit_button();
echo \'</form>\';
另一种方法是将PHP部分括起来,以便PHP不会解析HTML:
// adding the page to menu
add_menu_page(\'Theme Options\', \'Theme Options\', \'manage_options\', \'rm-options\', \'rm_display_options_page\');
// form to display options
?>
<form method="post" action="options.php">
<?php
settings_fields(\'rm_theme_options\'); // options name
do_settings_sections(\'rm-options\'); // page
submit_button();
?>
</form>
<?php
...
* Update *
这里有一点字符串串联,我无法完全理解,所以我在这里对其进行了更改,以便于我理解。它还可以帮助修复任何错误。在HTML中转义属性也是最佳做法,因此我更新了这一行以包含这些函数。
echo "<input type=\'text\' id=\'$id\' name=\'rm_theme_options[$id]\' value=\'" . esc_attr( $options[$id] ) . "\' />\';