Meta Box doesn't appear

时间:2016-04-30 作者:Erdinç Taze

我有3个自定义帖子类型和3个元框文件。问题是我在functions.php. 对于每个自定义帖子类型,我有三个元框PHP文件,但它只显示了最近添加的自定义帖子的一个元框字段。示例:

功能。php:

include \'inc/referanslar.php\';
include \'inc/hizmetler/hizmetler.php\';
include \'inc/projeler.php\',
include \'inc/projeler-meta-box.php\',
include \'inc/hizmetler/hizmetler-meta-box.php\';
include \'inc/referanslar-meta-box.php\';
它只是显示referanslar-meta-box.php 因为它在所有文件下。以下是我的元框文件:

hizmetler-meta-box.php :

/*
* Plugin Name: Hizmetler Özel Alanlar
* Author: Erdinç Taze
* Author URI: http://erdinctaze.com/
*/
$prefix = \'ozellikler_\'; 
$meta_box = array(
\'id\' => \'my-meta-box\',
\'title\' => \'Hizmet Özellikleri\',
\'page\' => \'hizmetler\',
\'context\' => \'normal\',
\'priority\' => \'high\',
\'fields\' => array(
array(

\'name\' => \'Hizmet İkon\',
\'desc\' => \'Lütfen hizmet ikonunuzu seçiniz\',
\'id\' => $prefix . \'hizmetikon\',
\'type\' => \'select\',
\'options\' => array(\'web-design\', \'google-apps\', \'graphic-design\', \'web-development\', \'seo\', \'mobile-app\', \'social-media-promotion\', \'online-promotion\', \'web-application\', \'orm\')
),
array(
\'name\' => \'Hizmet Bağlantı Adresi\',
\'desc\' => \'Lütfen devamını oku butonuna tıklandığında gidilecek bağlantıyı giriniz.\',
\'id\' => $prefix . \'hizmeturl\',
\'type\' => \'text\',
),

)
); 
add_action(\'admin_menu\', \'mytheme_add_box\'); 
// Add meta box
function mytheme_add_box() {
global $meta_box; 
add_meta_box($meta_box[\'id\'], $meta_box[\'title\'], \'mytheme_show_box\', $meta_box[\'page\'], $meta_box[\'context\'], $meta_box[\'priority\']);
} 
// Callback function to show fields in meta box
function mytheme_show_box() {
global $meta_box, $post; 
// Use nonce for verification
echo \'<input type="hidden" name="mytheme_meta_box_nonce" value="\', wp_create_nonce(basename(__FILE__)), \'" />\'; 
echo \'<table class="form-table">\'; 
foreach ($meta_box[\'fields\'] as $field) {
// get current post meta data
$meta = get_post_meta($post->ID, $field[\'id\'], true); 
echo \'<tr>\',
\'<th style="width:20%"><label for="\', $field[\'id\'], \'">\', $field[\'name\'], \'</label></th>\',
\'<td>\';
switch ($field[\'type\']) {
case \'text\':
echo \'<input type="text" name="\', $field[\'id\'], \'" id="\', $field[\'id\'], \'" value="\', $meta ? $meta : $field[\'std\'], \'" size="30" style="width:97%" />\',
\'<br />\', $field[\'desc\'];
break;
case \'textarea\':
echo \'<textarea name="\', $field[\'id\'], \'" id="\', $field[\'id\'], \'" cols="60" rows="4" style="width:97%">\', $meta ? $meta : $field[\'std\'], \'</textarea>\',
\'<br />\', $field[\'desc\'];
break;
case \'select\':
echo \'<select name="\', $field[\'id\'], \'" id="\', $field[\'id\'], \'">\';
foreach ($field[\'options\'] as $option) {
echo \'<option\', $meta == $option ? \' selected="selected"\' : \'\', \'>\', $option, \'</option>\';
}
echo \'</select>\';
break;
case \'radio\':
foreach ($field[\'options\'] as $option) {
echo \'<input type="radio" name="\', $field[\'id\'], \'" value="\', $option[\'value\'], \'"\', $meta == $option[\'value\'] ? \' checked="checked"\' : \'\', \' />\', $option[\'name\'];
}
break;
case \'checkbox\':
echo \'<input type="checkbox" name="\', $field[\'id\'], \'" id="\', $field[\'id\'], \'"\', $meta ? \' checked="checked"\' : \'\', \' />\';
break;
}
echo \'<td>\',
\'</tr>\';
} 
echo \'</table>\';
} 
add_action(\'save_post\', \'mytheme_save_data\'); 
// Save data from meta box
function mytheme_save_data($post_id) {
global $meta_box; 
// verify nonce
if (!wp_verify_nonce($_POST[\'mytheme_meta_box_nonce\'], basename(__FILE__))) {
return $post_id;
} 
// check autosave
if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) {
return $post_id;
} 
// check permissions
if (\'page\' == $_POST[\'post_type\']) {
if (!current_user_can(\'edit_page\', $post_id)) {
return $post_id;
}
} elseif (!current_user_can(\'edit_post\', $post_id)) {
return $post_id;
} 
foreach ($meta_box[\'fields\'] as $field) {
$old = get_post_meta($post_id, $field[\'id\'], true);
$new = $_POST[$field[\'id\']]; 
if ($new && $new != $old) {
update_post_meta($post_id, $field[\'id\'], $new);
} elseif (\'\' == $new && $old) {
delete_post_meta($post_id, $field[\'id\'], $old);
}
}
}
referanslar-meta-box.php :

/*
* Plugin Name: Referanslar Özel Alanlar
* Author: Erdinç Taze
* Author URI: http://erdinctaze.com/
*/
$prefix = \'erdinc_\'; 
$meta_box = array(
\'id\' => \'referans_meta_box\',
\'title\' => \'Referans Ayrıntılar\',
\'page\' => \'logolar\',
\'callback\' => \'show_custom_meta_box\',
\'context\' => \'normal\',
\'priority\' => \'high\',
\'fields\' => array(
array(
\'name\' => \'Yapılan İşlemler\',
\'desc\' => \'Lütfen firma için yapılan hizmetleri belirtiniz.\',
\'id\' => $prefix . \'islemler\',
\'type\' => \'text\',
),
array(
\'name\' => \'Referans URL\',
\'desc\' => \'Lütfen referans butonuna tıklandığında gidilecek bağlantıyı giriniz.\',
\'id\' => $prefix . \'referansurl\',
\'type\' => \'text\',
),
)
); 
add_action(\'admin_menu\', \'mytheme_add_box\'); 
// Add meta box
function referans_add_box() {
global $meta_box; 
add_meta_box($meta_box[\'id\'], $meta_box[\'title\'], \'mytheme_show_box\', $metabox[\'callback\'], $meta_box[\'page\'], $meta_box[\'context\'], $meta_box[\'priority\']);
} 
// Callback function to show fields in meta box
function referans_show_box() {
global $meta_box, $post; 
// Use nonce for verification
echo \'<input type="hidden" name="mytheme_meta_box_nonce" value="\', wp_create_nonce(basename(__FILE__)), \'" />\'; 
echo \'<table class="form-table">\'; 
foreach ($meta_box[\'fields\'] as $field) {
// get current post meta data
$meta = get_post_meta($post->ID, $field[\'id\'], true); 
echo \'<tr>\',
\'<th style="width:20%"><label for="\', $field[\'id\'], \'">\', $field[\'name\'], \'</label></th>\',
\'<td>\';
switch ($field[\'type\']) {
case \'text\':
echo \'<input type="text" name="\', $field[\'id\'], \'" id="\', $field[\'id\'], \'" value="\', $meta ? $meta : $field[\'std\'], \'" size="30" style="width:97%" />\',
\'<br />\', $field[\'desc\'];
break;
case \'textarea\':
echo \'<textarea name="\', $field[\'id\'], \'" id="\', $field[\'id\'], \'" cols="60" rows="4" style="width:97%">\', $meta ? $meta : $field[\'std\'], \'</textarea>\',
\'<br />\', $field[\'desc\'];
break;
case \'select\':
echo \'<select name="\', $field[\'id\'], \'" id="\', $field[\'id\'], \'">\';
foreach ($field[\'options\'] as $option) {
echo \'<option\', $meta == $option ? \' selected="selected"\' : \'\', \'>\', $option, \'</option>\';
}
echo \'</select>\';
break;
case \'radio\':
foreach ($field[\'options\'] as $option) {
echo \'<input type="radio" name="\', $field[\'id\'], \'" value="\', $option[\'value\'], \'"\', $meta == $option[\'value\'] ? \' checked="checked"\' : \'\', \' />\', $option[\'name\'];
}
break;
case \'checkbox\':
echo \'<input type="checkbox" name="\', $field[\'id\'], \'" id="\', $field[\'id\'], \'"\', $meta ? \' checked="checked"\' : \'\', \' />\';
break;
}
echo \'<td>\',
\'</tr>\';
} 
echo \'</table>\';
} 
add_action(\'save_post\', \'mytheme_save_data\'); 
// Save data from meta box
function referans_save_data($post_id) {
global $meta_box; 
// verify nonce
if (!wp_verify_nonce($_POST[\'mytheme_meta_box_nonce\'], basename(__FILE__))) {
return $post_id;
} 
// check autosave
if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) {
return $post_id;
} 
// check permissions
if (\'page\' == $_POST[\'post_type\']) {
if (!current_user_can(\'edit_page\', $post_id)) {
return $post_id;
}
} elseif (!current_user_can(\'edit_post\', $post_id)) {
return $post_id;
} 
foreach ($meta_box[\'fields\'] as $field) {
$old = get_post_meta($post_id, $field[\'id\'], true);
$new = $_POST[$field[\'id\']]; 
if ($new && $new != $old) {
update_post_meta($post_id, $field[\'id\'], $new);
} elseif (\'\' == $new && $old) {
delete_post_meta($post_id, $field[\'id\'], $old);
}
}
}

1 个回复
SO网友:Howard E

如果不添加自定义帖子类型,第二个帖子的函数调用似乎有误

add_action(\'admin_menu\', \'mytheme_add_box\'); 
// Add meta box
function referans_add_box() {
你想说什么

add_action(\'admin_menu\', \'referans_add_box\'); 
// Add meta box
function referans_add_box() {

相关推荐