Notice Undefined index - wordpress custom metabox
Ik ben bezig met het programmeren van een slider plugin voor WordPress. Hierbij wil ik gebruik maken custom metaboxen.
De velden die in de metaboxen moet komen te staan, staan in een array opgesomd.
Nu is het probleem dat ik een Notice error krijg, namelijk:
Quote:
Notice: Undefined index: dsmeta_image in /customers/0/d/a/xxx/httpd.www/wordpress/wp-content/plugins/ds-flexslider/includes/cpt-manager.php on line 181 Notice: Undefined index: dsmeta_image_caption in /customers/0/d/a/xxx/httpd.www/wordpress/wp-content/plugins/ds-flexslider/includes/cpt-manager.php on line 181
Ik heb op internet gezocht en dit geeft aan dat de dsmeta_image en dsmeta_image_caption niet bestaan.
Ik heb gebruik gemaakt van de volgende tutorial voor het maken van een custom metabox en velden:
http://wp.tutsplus.com/tutorials/reusable-custom-meta-boxes-part-1-intro-and-basic-fields/
Hierbij de code waar het fout gaat volgens de error:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
add_action('save_post', 'dsslider_manager_save_extras');
function dsslider_manager_save_extras($post_id) {
global $custom_meta_fields;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return $post_id;
}
// loop through fields and save the data
foreach ($custom_meta_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);
}
} // end foreach
}
function dsslider_manager_save_extras($post_id) {
global $custom_meta_fields;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return $post_id;
}
// loop through fields and save the data
foreach ($custom_meta_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);
}
} // end foreach
}
Line 181 is namelijk:
Mijn vraag is wat er precies mis zou kunnen gaan en hoe ik dit kan oplossen.
Ik hoor graag van jullie.
Met vriendelijke groet,
Casper
Daarnaast... is het niet $_POST['field'][['id']?
Klopt! Die bestaat niet...
Jou voorbeeld is als volgt, maar hier sluit je toch verkeerd af? (waarschijnlijk een typefout?
$_POST[ 'field' ] [ [ 'id' ]
Moet denk ik zo zijn dan:
$_POST[ 'field' ] [ 'id' ]
Ik heb het volgende getest:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
foreach ($custom_meta_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);
}
} // end foreach
$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);
}
} // end foreach
Dit gaf dezelfde error, alleen nu met de output dat 'field' niet bestaat.
Tevens heb ik dit geprobeerd:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
foreach ($custom_meta_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);
}
} // end foreach
$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);
}
} // end foreach
De error die ik toen kreeg is:
Warning: illegal offset type in ... on line 180 (de regel van de update_post_meta).
Ik hoor graag van je.
Gewijzigd op 27/12/2012 15:30:46 door Casper B