我想爲我的主題創建一個選項頁面,其中的選項頁面上有一個下拉列表,顯示所有類別名稱,選項值爲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