我发现这个脚本效果非常好。它在管理员的类别页面中添加了几个额外的字段。
add_action( 'category_add_form_fields', 'category_form_custom_field_add', 10 );
add_action( 'category_edit_form_fields', 'category_form_custom_field_edit', 10, 2 );
function category_form_custom_field_add( $taxonomy ) {
?>
<div class="form-field">
<label for="first_name">First Name</label>
<input name="first_name" id="first_name" type="text" value="" size="10" />
</div>
<div class="form-field">
<label for="last_name">Last Name</label>
<input name="last_name" id="last_name" type="text" value="" size="10" />
</div>
<?php
}
function category_form_custom_field_edit( $tag, $taxonomy ) {
$tr_first_name = 'first_name_' . $tag->term_id;
$first_name = get_option( $tr_first_name );
$tr_last_name = 'last_name_' . $tag->term_id;
$last_name = get_option( $tr_last_name );
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="first_name">First Name</label></th>
<td>
<input type="text" name="first_name" id="first_name" value="<?php echo esc_attr( $first_name ) ? esc_attr( $first_name ) : ''; ?>" />
</td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="last_name">Last Name</label></th>
<td>
<input type="text" name="last_name" id="last_name" value="<?php echo esc_attr( $last_name ) ? esc_attr( $last_name ) : ''; ?>" />
</td>
</tr>
<?php
}
/** Save Custom Fields */
add_action( 'created_category', 'category_form_custom_field_save', 10, 2 );
add_action( 'edited_category', 'category_form_custom_field_save', 10, 2 );
function category_form_custom_field_save( $term_id, $tt_id ) {
if ( isset( $_POST['first_name'] ) ) {
$tr_first_name = 'first_name_' . $term_id;
update_option( $tr_first_name, $_POST['first_name'] );
}
if ( isset( $_POST['last_name'] ) ) {
$last_name = 'last_name_' . $term_id;
update_option( $last_name, $_POST['last_name'] );
}
}
但是我不知道我必须做些什么来在我在page.php上的这个循环中显示前端的first_name和last_name值
<?php // List all category names and custom fields
$categories = get_categories('hide_empty=0&order=ASC');
foreach ($categories as $cat) {
$posts = new WP_Query( array('post_type' => 'post', 'showposts' => -1, 'post_status' => array('trash', 'publish'), 'cat' => $cat->cat_ID));
?>
<div class="stuff">
<h2><a href="<?php echo $cat->category_nicename; ?>"><?php echo $cat->cat_name; ?></a></h2>
<p></p>
</div>
<?php }
?>
理想情况下,我希望在
标记内显示first_name和last_name值。
提前致谢!
答案 0 :(得分:1)
您使用字段键和术语ID保存选项表中类别字段的值。例如。 first_name_5
。
例如,如果您想在“stuff”div中的空段落中显示第一个名称字段,您可以使用:
<p>First Name: <?php echo get_option( 'first_name_' . $cat->term_id ); ?></p>