我修改了我的主题元盒。php来满足我的需要,我得到了这个
Blockquote警告:call\\u user\\u func\\u array()要求参数1为有效回调,在E:\\xampp\\htdocs\\wordpress\\wp includes\\plugin中找不到函数“mytheme\\u add\\u box”,或函数名无效。php第406行Blockquote
我怎样才能修复它?
这是我的旧metabox代码
<?php
$prefix = \'wtf_\';
$meta_box = array(
\'id\' => \'propertybox\',
\'title\' => \'Property listing details\',
\'page\' => \'listings\',
\'context\' => \'normal\',
\'priority\' => \'high\',
\'fields\' => array(
array(
\'name\' => \'Propert ID number\',
\'desc\' => \'Enter a property ID number, if any \',
\'id\' => $prefix . \'pid\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Bath\',
\'desc\' => \'Number of bathrooms.\',
\'id\' => $prefix . \'bath\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'An\',
\'desc\' => \'Anul constructiei\',
\'id\' => $prefix . \'an\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Etaj\',
\'desc\' => \'Etajul\',
\'id\' => $prefix . \'etaj\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Balcone\',
\'desc\' => \'Numar balcoane\',
\'id\' => $prefix . \'balcon\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Parcare\',
\'desc\' => \'Numar locuri de parcare\',
\'id\' => $prefix . \'parcare\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Suprafata totala\',
\'desc\' => \'Suprafata totala a terenului (Casa/vila)\',
\'id\' => $prefix . \'suprafatatotala\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Front stradal\',
\'desc\' => \'Suprafata front stradal\',
\'id\' => $prefix . \'front\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Suprafata curte libera \',
\'desc\' => \'Suprafata curte libera \',
\'id\' => $prefix . \'suprafatacurte\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Amprenta casei \',
\'desc\' => \'Suprafata amprentei \',
\'id\' => $prefix . \'amprenta\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Regim inaltime\',
\'desc\' => \'Regim inaltime \',
\'id\' => $prefix . \'inaltime\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Certificat urbanism \',
\'desc\' => \'certificat urbanism\',
\'id\' => $prefix . \'certificat\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Asking price\',
\'desc\' => \'Enter the actual asking price \',
\'id\' => $prefix . \'price\',
\'type\' => \'text\',
\'std\' => \'\'
)
),
);
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 class="theEditor" 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>\',
\'<br />\', $field[\'desc\'];
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);
}
}
}
?>
这是我的新代码
<?php
$prefix = \'wtf_\';
$property_fields = array(
array(
\'name\' => \'Propert ID number\',
\'desc\' => \'Enter a property ID number, if any \',
\'id\' => $prefix.\'pid\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Bath\',
\'desc\' => \'Number of bathrooms.\',
\'id\' => $prefix.\'bath\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'An\',
\'desc\' => \'Anul constructiei\',
\'id\' => $prefix.\'an\',
\'type\' => \'text\',
\'std\' => \'\'
));
$mansion_fields = array(
array(
\'name\' => \'Etaj\',
\'desc\' => \'Etajul\',
\'id\' => $prefix . \'etaj\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Balcone\',
\'desc\' => \'Numar balcoane\',
\'id\' => $prefix . \'balcon\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Parcare\',
\'desc\' => \'Numar locuri de parcare\',
\'id\' => $prefix . \'parcare\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Suprafata totala\',
\'desc\' => \'Suprafata totala a terenului (Casa/vila)\',
\'id\' => $prefix . \'suprafatatotala\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Front stradal\',
\'desc\' => \'Suprafata front stradal\',
\'id\' => $prefix . \'front\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Suprafata curte libera \',
\'desc\' => \'Suprafata curte libera \',
\'id\' => $prefix . \'suprafatacurte\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Amprenta casei \',
\'desc\' => \'Suprafata amprentei \',
\'id\' => $prefix . \'amprenta\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Regim inaltime\',
\'desc\' => \'Regim inaltime \',
\'id\' => $prefix . \'inaltime\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Certificat urbanism \',
\'desc\' => \'certificat urbanism\',
\'id\' => $prefix . \'certificat\',
\'type\' => \'text\',
\'std\' => \'\'
),
array(
\'name\' => \'Asking price\',
\'desc\' => \'Enter the actual asking price \',
\'id\' => $prefix . \'price\',
\'type\' => \'text\',
\'std\' => \'\'
));
add_action( \'add_meta_boxes\', \'my_meta_boxes\' );
function my_meta_boxes(){
//Don\'t forget to change "post" with post_type where you want to add the metaboxes
add_meta_box("propertybox", "Property Options", "propertybox", "listings", "normal", "high");
add_meta_box("mansionbox", "Mansion Options", "mansionbox", "listings", "normal", "high");
}
function propertybox(){
global $prefix;
global $property_fields;
//Put here the fields you want display inside the "Property options" box.
build_fieds($property_fields);
}
function mansionbox(){
global $prefix;
global $mansion_fields;
build_fieds($mansion_fields);
}
function build_fieds($fields){
global $post;
echo \'<table class="form-table">\';
foreach ($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 class="theEditor" 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>\',
\'<br />\', $field[\'desc\'];
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 $mansion_fields;
global $property_fields;
// 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 ($property_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);
}
}
foreach ($mansion_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);
}
}
}
?>