自定义字段学习
一、给自定义面版添加下拉框、复选框等表单项 1、添加字段数组,代码如下(这段代码是我们要在自定义面版中需要添加…
一、给自定义面版添加下拉框、复选框等表单项
1、添加字段数组,代码如下(这段代码是我们要在自定义面版中需要添加的表单项。):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
$new_meta_boxes =
array(
“title” => array(
“name” => “_meta_title”,
“std” => “”,
“title” => “标题”,
“type”=>“title”),
“keywords” => array(
“name” => “_meta_keywords”,
“std” => “”,
“title” => “关键字”,
“type”=>“text”),
“description” => array(
“name” => “_meta_description”,
“std” => “”,
“title” => “描述”,
“type”=>“textarea”),
“category” => array(
“name” => “_meta_cate”,
“std” => “”,
“title” => “选择分类”,
“subtype”=> “cat”,
“type”=>“dropdown”),
“radio” => array(
“name” => “_meta_radio”,
“std” => 1,
“title” => “单选框”,
“buttons” => array(‘Yes’,‘No’),
“type”=>“radio”),
“checkbox” => array(
“name” => “_meta_checkbox”,
“std” => 1,
“title” => “复选框”,
“type”=>“checkbox”),
);
|
2、创建自定义面版内容函数,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
//面板内容的函数
function new_meta_boxes() {
global $post, $new_meta_boxes;
foreach($new_meta_boxes as $meta_box) {
$meta_box_value = get_post_meta($post->ID, $meta_box[‘name’].‘_value’, true);
if($meta_box_value != “”)
$meta_box[‘std’] = $meta_box_value;
echo‘<input type=”hidden” name=”‘.$meta_box[‘name’].‘_noncename” id=”‘.$meta_box[‘name’].‘_noncename” value=”‘.wp_create_nonce( plugin_basename(__FILE__) ).‘” />’;
switch ( $meta_box[‘type’] ){
case ‘title’:
echo‘<h4>’.$meta_box[‘title’].‘</h4>’;
break;
case ‘text’:
echo‘<h4>’.$meta_box[‘title’].‘</h4>’;
echo ‘<input type=”text” size=”40″ name=”‘.$meta_box[‘name’].‘_value” value=”‘.$meta_box[‘std’].‘” /><br />’;
break;
case ‘textarea’:
echo‘<h4>’.$meta_box[‘title’].‘</h4>’;
echo ‘<textarea cols=”60″ rows=”3″ name=”‘.$meta_box[‘name’].‘_value”>’.$meta_box[‘std’].‘</textarea><br />’;
break;
case ‘dropdown’:
echo‘<h4>’.$meta_box[‘title’].‘</h4>’;
if($meta_box[‘subtype’] == ‘cat’){
$select = ‘Select category’;
$entries = get_categories(‘title_li=&orderby=name&hide_empty=0’);//获取分类
}
echo ‘<p><select name=”‘.$meta_box[‘name’].‘_value”> ‘;
echo ‘<option value=””>’.$select .‘</option> ‘;
foreach ($entries as $key => $entry){
$id = $entry->term_id;
$title = $entry->name;
if ( $meta_box[‘std’] == $id ){
$selected = “selected=’selected’”;
}else{
$selected = “”;
}
echo “<option $selected value=’”. $id.“‘>”. $title.“</option>”;
}
echo ‘</select><br />’;
break;
case ‘radio’:
echo‘<h4>’.$meta_box[‘title’].‘</h4>’;
$counter = 1;
foreach( $meta_box[‘buttons’] as $radiobutton ) {
$checked =“”;
if(isset($meta_box[‘std’]) && $meta_box[‘std’] == $counter) {
$checked = ‘checked = “checked”‘;
}
echo ‘<input ‘.$checked.‘ type=”radio” class=”kcheck” value=”‘.$counter.‘” name=”‘.$meta_box[‘name’].‘_value”/>’.$radiobutton;
$counter++;
}
break;
case ‘checkbox’:
echo‘<h4>’.$meta_box[‘title’].‘</h4>’;
if( isset($meta_box[‘std’]) && $meta_box[‘std’] == ‘true’ )
$checked = ‘checked = “checked”‘;
else
$checked = ”;
echo ‘<input type=”checkbox” name=”‘.$meta_box[‘name’].‘_value” value=”true” ‘.$checked.‘ />’;
break;
}
}
}
|
3、创建自定义面版,代码如下:
1
2
3
4
5
6
|
function create_meta_box() {
global $theme_name;
if ( function_exists(‘add_meta_box’) ) {
add_meta_box( ‘new-meta-boxes’, ‘自定义模块’, ‘new_meta_boxes’, ‘post’, ‘normal’, ‘high’ );
}
}
|
4、保存更新自定义面版数据。代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
function save_postdata( $post_id ) {
global $post, $new_meta_boxes;
foreach($new_meta_boxes as $meta_box) {
if ( !wp_verify_nonce( $_POST[$meta_box[‘name’].‘_noncename’], plugin_basename(__FILE__) )) {
return $post_id;
}
if ( ‘page’ == $_POST[‘post_type’] ) {
if ( !current_user_can( ‘edit_page’, $post_id ))
return $post_id;
}
else {
if ( !current_user_can( ‘edit_post’, $post_id ))
return $post_id;
}
$data = $_POST[$meta_box[‘name’].‘_value’];
if(get_post_meta($post_id, $meta_box[‘name’].‘_value’) == “”)
add_post_meta($post_id, $meta_box[‘name’].‘_value’, $data, true);
elseif($data != get_post_meta($post_id, $meta_box[‘name’].‘_value’, true))
update_post_meta($post_id, $meta_box[‘name’].‘_value’, $data);
elseif($data == “”)
delete_post_meta($post_id, $meta_box[‘name’].‘_value’, get_post_meta($post_id, $meta_box[‘name’].‘_value’, true));
}
}
|
5、添加动作触发函数。代码如下:
1
2
|
add_action(‘admin_menu’, ‘create_meta_box’);
add_action(‘save_post’, ‘save_postdata’);
|
6、让前台的代码中能展示:
1
2
|
$description = get_post_meta($post->ID, “description_value”, true);
$keywords = get_post_meta($post->ID, “keywords_value”, true);
|
类别:WordPress开发、
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
评论功能已经关闭!