Notice Undefined index - wordpress custom metabox

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Casper B

Casper B

27/12/2012 15:07:04
Quote Anchor link
Beste,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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
}


Line 181 is namelijk:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
        $new = $_POST[$field['id']];


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
 
PHP hulp

PHP hulp

21/11/2024 21:28:53
 
Eddy E

Eddy E

27/12/2012 15:10:54
Quote Anchor link
Bestaat $_POST['field['id']] wel? Waarschijnlijk niet.
Daarnaast... is het niet $_POST['field'][['id']?
 
Casper B

Casper B

27/12/2012 15:18:52
Quote Anchor link
@Eddy Erkelens,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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


Dit gaf dezelfde error, alleen nu met de output dat 'field' niet bestaat.


Tevens heb ik dit geprobeerd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.