我想为我的主题创建一个选项页面,其中的选项页面上有一个下拉列表,显示所有类别名称,选项值为ID号该类别,以便在下拉菜单中显示所有类别名称,但是当您选择类别并在前端回显时,它会回显类别标识。WordPress - 主题选项页面与类别列表
我现在的代码显示了类别名称列表,但也回显了名称到前端。我试图修改它的身份证号码,但我没有运气。
因此,只需总结一下,在选项页面上,它需要在下拉列表中显示类别名称,但在前端应该回显类别的ID号。
编辑:这是我使用创建的选项页面的完整代码 - 这一切坐镇内线的functions.php:
<?php
$themename = "TGH 2012";
$shortname = "tgh";
$categories = get_categories('hide_empty=0&orderby=name');
$wp_cats = array();
foreach ($categories as $category_list) {
$wp_cats[$category_list->cat_id] = $category_list->cat_name;
}
array_unshift($wp_cats, "Choose a category");
global $options;
$options = array (
array( "name" => "Homepage Options",
"type" => "title"),
array( "type" => "open"),
array( "name" => "Pick Categories",
"desc" => "Choose a category from the list to do some interesting stuff.",
"id" => $shortname."_categories",
"type" => "select",
"options" => $wp_cats,
"std" => ""),
array( "type" => "close")
);
function mytheme_add_admin() {
global $themename, $shortname, $options;
if ($_GET['page'] == basename(__FILE__)) {
if ('save' == $_REQUEST['action']) {
foreach ($options as $value) {
update_option($value['id'], $_REQUEST[ $value['id'] ]); }
foreach ($options as $value) {
if(isset($_REQUEST[ $value['id'] ])) { update_option($value['id'], $_REQUEST[ $value['id'] ] ); } else { delete_option($value['id']); } }
header("Location: themes.php?page=functions.php&saved=true");
die;
} else if('reset' == $_REQUEST['action']) {
foreach ($options as $value) {
delete_option($value['id']); }
header("Location: themes.php?page=functions.php&reset=true");
die;
}
}
add_theme_page($themename." Options", "".$themename." Options", 'edit_themes', basename(__FILE__), 'mytheme_admin');
}
function mytheme_admin() {
global $themename, $shortname, $options;
if ($_REQUEST['saved']) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings saved.</strong></p></div>';
if ($_REQUEST['reset']) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings reset.</strong></p></div>';
?>
<div class="wrap">
<h2><?php echo $themename; ?> settings</h2>
<form method="post">
<?php foreach ($options as $value) {
switch ($value['type']) {
case "open":
?>
<table width="100%" border="0" style="background-color:#eef5fb; padding:10px;">
<?php break;
case "close":
?>
</table>
<br />
<?php break;
case "title":
?>
<table width="100%" border="0" style="background-color:#dceefc; padding:5px 10px;">
<tr>
<td colspan="2"><h3 style="font-family:Georgia,'Times New Roman',Times,serif;"><?php echo $value['name']; ?></h3></td>
</tr>
<?php break;
case 'text':
?>
<tr>
<td width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
<td width="80%"><input style="width:400px;" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" type="<?php echo $value['type']; ?>" value="<?php if (get_settings($value['id']) != "") { echo get_settings($value['id']); } else { echo $value['std']; } ?>" /></td>
</tr>
<tr>
<td><small><?php echo $value['desc']; ?></small></td>
</tr>
<tr>
<td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;"> </td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<?php
break;
case 'textarea':
?>
<tr>
<td width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
<td width="80%"><textarea name="<?php echo $value['id']; ?>" style="width:400px; height:200px;" type="<?php echo $value['type']; ?>" cols="" rows=""><?php if (get_settings($value['id']) != "") { echo get_settings($value['id']); } else { echo $value['std']; } ?>
</textarea></td>
</tr>
<tr>
<td><small><?php echo $value['desc']; ?></small></td>
</tr>
<tr>
<td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;"> </td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<?php
break;
case 'select':
?>
<tr>
<td width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
<td width="80%"><select style="width:240px;" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>">
<?php foreach ($value['options'] as $option) { ?>
<option<?php if (get_settings($value['id']) == $option) { echo ' selected="selected"'; } elseif ($option == $value['std']) { echo ' selected="selected"'; } ?>><?php echo $option; ?></option>
<?php } ?>
</select></td>
</tr>
<tr>
<td><small><?php echo $value['desc']; ?></small></td>
</tr>
<tr>
<td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;"> </td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<?php
break;
case "checkbox":
?>
<tr>
<td width="20%" rowspan="2" valign="middle"><strong><?php echo $value['name']; ?></strong></td>
<td width="80%"><? if(get_settings($value['id'])){ $checked = "checked=\"checked\""; }else{ $checked = ""; } ?>
<input type="checkbox" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" value="true" <?php echo $checked; ?> /></td>
</tr>
<tr>
<td><small><?php echo $value['desc']; ?></small></td>
</tr>
<tr>
<td colspan="2" style="margin-bottom:5px;border-bottom:1px dotted #000000;"> </td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<?php break;
}
}
?>
<!--</table>-->
<p class="submit">
<input name="save" type="submit" value="Save changes" />
<input type="hidden" name="action" value="save" />
</p>
</form>
<form method="post">
<p class="submit">
<input name="reset" type="submit" value="Reset" />
<input type="hidden" name="action" value="reset" />
</p>
</form>
<?php
}
add_action('admin_menu', 'mytheme_add_admin'); ?>
<?php
if (function_exists('register_sidebar'))
register_sidebar(array(
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '',
'after_title' => '',
));
?>
下面的代码,然后放置在“header.php文件”的底部:
<?php global $options;
foreach ($options as $value) {
if (get_settings($value['id']) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings($value['id']); }
}
?>
然后,这是我用来显示在前端保存变量的代码:
<?php echo $tgh_categories; ?>
刚刚尝试过这一点,恐怕它不工作:( – 2012-02-02 17:36:07
看我上面编辑 – seanbreeden 2012-02-02 19:05:58
编辑后的代码显示类别ID,然后显示类别名称,但不再列出它们在select中,而是出现在管理页面的顶部,并在下面显示一条错误消息:警告:无法修改标题信息 - 已在(线路861上的/wp-includes/functions.php中的(输出在/themes/gh2012/functions.php:72处开始输出) – 2012-02-02 20:21:37