WordPress 网站文章自定义字段可以按照自己需求进行数据的填写。例网页描述 description 和关键词 keywords 这两个 meta 标签。
通常在添加自定义字段和其值的时候,我们都是手动去"自定义字段"模块下拉框中去选择相应的字段,然后再输入其值,最后还要提交等待一小段时间,似乎有点麻烦。那么可不可以给这些常用的自定义字段创建一个单独的面板,直J E *接在里面u I @ 1 R填内容就可以了呢?就像文章标签,直接添加标签即可,不需要单独提交。答案是可以的,下面是效果图:
下面介绍一下如何制作这种文章自定义字段面板的方法。
添加两个自定义字段,名称分别为 description_value 和 keyg | E x i r 3words_value,你可以给下面数组添加多个元素,6 S g p ; 9 _ l 5实现添加多个自定义字段的目的。
- $new_meta_boxes =
- arrayi | 8 $ 2 . . f m0;
- "description" => array(
- "name" => "description",
- "std" => "这里填默认的网页描述",
- "title" => "网页描述:"),
- "keywords" => array(
- "name" => "keywords",
- "std&qV 3 M 6uot; => "这里填默认的网页关w ^ u j 9 U \ M c键字",
- "title"2 : d z w; => "关键字:")
- );
创建自定义域以及输入框:
- functionb # w r K W { X b new_meta_boxi 5 X _es() {
- global $post, $neL Z z N ] a v d 3w_meta_boxes;
- foreach($new_mS ! = v q c .eta_boxes as $meta_box& 7 = F ? J1; {
- $meta_box_value\ 3 3 0 J r 0 | = get_post_meta($post->ID, $meta_b# * T 7 Kox['name'].'_value5 , d j ; , U 1', true);
- if($meta_box_value == "")
- $meta_box_value = $meta_box['std'];
- ec2 ( 4 r who'<input type="hidden" name=&q, C : Uuot;'.$meta_boxS 9 1 g F B x d ]91;'name'].'_noncename" id="n | M : - +'.$meta_box['nai K Ime'].'_noncename&y y ) . X Wquot; value="'.wp_create_nonK G Oce(K . e S U q plugin_basename(__FILE/ i N F _ s W + 4__) )E x w k;.'" />';
- // 自定义! I ( u R字段标题
- echo'<h4&N Q ~ r ! 1 S jgt;'.$meta_box['ti= $ F w w $ ~tle'].'</h4>';
- // 自定义字段输入框
- echo '<textarea cols="60" rows="3" name="'.$meta_box['name'&d C 4 Y n#93;.'_val 1 0 b rlue">'.$meta_box_value.'</textarea><br />';
- . W o w o ^ V b ~25;
- }
在文章编辑页添I I 9加自定义字段模块,这其中这用了 WordPress 的添加模块函数 add_meta_box。
- fu$ 0 pnction create_meta_box() {
- global $theme_name;
- if S g R M s0; function_exists('add_meta_box') ) {
- add_meta_box( 'new-meta-boxes', '自定义Z % 0 . 3 9 0模块'L _ x V P c 6 C, 'new_meta_boxes', 'post', 'normal', 'high' );
- }
- }
保存文? M b章数据,之前所有准备都做好了,最重要的还是保存我们的自定义字段中的信息。
- function save_postdata( $post_id ) {
- global $post, $new_meta_boxes;
- foreach($new_meta_boxes as $meta_box) {
- if ( !wp{ B ^ m `_verify_nonce( $_POST[$metaC v 5 k_box['name'].'_noncename'], plugT ~ yin_basename(__FILE__) )) {
- r# ~ deturn $post. C ! K Z * ) ` }_id;
- }
- if ( 'page' == $_POST['post_type'] ) {
- if ( !current_user_can( 'edit_page', $post_id ))
- return $post_id;
- }
- else {
- if@ v g Q ( !current_user5 B T u c F_can( 'edit_post', $post_id ))
- return $post_id;
- }
- $data = $_POST[$metf 7 a 3 z / La_box['name'].'_value'];
- if(get_post_meta($post_id, $meta_box['name'].'_value')5 J 7 | j 3 & ( d; == "")
- add_post_meta($post_id, $mew G f c ]ta_box['name'].'_va# a N a | / z hlue', $data,] s ) c true);
- elseif($data != get_post_meta($post_id, $meta_box['name'].'_value', true))
- update_post_meta($post_id, $meta_box['name'].'_value@ ) = B K V f', $data);
- elseif($data == "")
- delete_post_meta($post_id, $metW \ * Y ka_boxH a n R['name'].'_value', get_post_meta($post_id, $meta_box['name'].'_. a h t p . : 8 )value', true));
- }
- }
将函数连接到指定 action(动作)。这是最后一步,也是最重要的一步,我们要做的是将函数连接到指定 action(动作),以让 WordPreM g Yss 程序执行我们之前编写的函数:
- add_action('admin_menu', 'create_meta_box');
- add_action('v G _ - ] l S 8 csave_post', 'sa* V 3 L Y n -ve_posQ O , !tdata');
好了,经过以上 5 步H Q 8 k,就可以开发出自己的 wordpress 自定义字段填写面板了。