WordPress给分类和标签增加自定义字段的教程代码

前面Hi主题分享过wordpress增加分类关键词自定义字段的教程代码,而这次给分类和标签增加自定义字段的核心代码和分类关键词自定义字段代码其实是一样的,只是进行了小小的优化和扩展以及增加了标签的钩子函数,下面以给分类和标签增加自定义标题、自定义关键词和自定义描述的自定义字段的示例代码。

把下面的代码添加至主题的 functions.php 文件:

<?php 
function hitheme_net_add_category_field(){
	echo '<div class="form-field">
			<label for="tag-title">自定义标题</label>
			<input name="tag-title" id="tag-title" type="text" value="" size="40">
			<p>请在此输入用于SEO优化的标题。</p>
		  </div>';	
	echo '<div class="form-field">
			<label for="tag-keywords">自定义关键词</label>
			<input name="tag-keywords" id="tag-keywords" type="text" value="" size="40">
			<p>请在此输入用于SEO优化的关键词。</p>
		  </div>';		  
	echo '<div class="form-field">
			<label for="tag-description">自定义描述</label>
			<textarea name="tag-description" id="tag-description" class="large-text" rows="5" cols="50"></textarea>
			<p>请在此输入用于SEO优化的关键词。</p>
		  </div>';		  
}
 
function hitheme_net_edit_category_field($tag){
	echo '<tr class="form-field">
			<th scope="row"><label for="tag-title">自定义标题</label></th>
			<td>
				<p><input name="tag-title" id="tag-title" type="text" value="';
				echo get_option('_category_title'.$tag->term_id).'" size="40"/></p>
				<p class="description">请在此输入用于SEO优化的标题。</p>
			</td>
		</tr>';
 
	echo '<tr class="form-field">
			<th scope="row"><label for="tag-keywords">自定义关键词</label></th>
			<td>
				<p><input name="tag-keywords" id="tag-keywords" type="text" value="';
				echo get_option('_category_keywords'.$tag->term_id).'" size="40"/></p>
				<p class="cat-url">请在此输入用于SEO优化的关键词。</p>
			</td>
		</tr>';	
 
	echo '<tr class="form-field">
			<th scope="row"><label for="tag-description">自定义描述</label></th>
			<td>
				<p><textarea name="tag-description" id="tag-description" class="large-text" rows="5" cols="50">'.get_option('_category_description'.$tag->term_id).'</textarea></p>
				<p class="cat-url">请在此输入用于SEO优化的描述。</p>
			</td>
		</tr>';		
}
 
function hitheme_net_taxonomy_metadate($term_id){
	if(isset($_POST['tag-title']) && isset($_POST['tag-keywords']) && isset($_POST['tag-description'])){
 
		if(!current_user_can('manage_categories')){
			return $term_id;
		}
 
		$title_key = '_category_title'.$term_id; // key 选项名为 cat-tel-1 类型
		$title_value = $_POST['tag-title'];	// value
 
 
		$word_key = '_category_keywords'.$term_id;
		$word_value = $_POST['tag-keywords'];
 
		$desc_key = '_category_description'.$term_id;
		$desc_value = $_POST['tag-description'];		
 
 
		update_option( $title_key, $title_value ); 
		update_option( $word_key, $word_value );
		update_option( $desc_key, $desc_value );
	}
} 
 
add_action('category_add_form_fields','hitheme_net_add_category_field',10,2);
add_action('category_edit_form_fields','hitheme_net_edit_category_field',10,2);
add_action('created_category','hitheme_net_taxonomy_metadate',10,1);
add_action('edited_category','hitheme_net_taxonomy_metadate',10,1);
 
add_action( 'post_tag_add_form_fields', 'hitheme_net_add_category_field',10,2);  
add_action( 'post_tag_edit_form_fields', 'hitheme_net_edit_category_field',10,2);  
add_action( 'edited_post_tag', 'hitheme_net_taxonomy_metadate',10,1);  
add_action( 'create_post_tag', 'hitheme_net_taxonomy_metadate',10,1);
?>

输出代码

<?php
echo get_option('_category_title'.get_queried_object_id());
echo get_option('_category_keywords'.get_queried_object_id());
echo get_option('_category_description'.get_queried_object_id());
?>

代码很简单,可以直接复制使用或者参考增加更多自定义字段。