Notificare: Încercare de obținere a proprietății unui non-obiect în options.php

27 feb. 2013, 12:04:56
Vizualizări: 22.9K
Voturi: 0

Primesc următoarea notificare în options.php când testez tema mea în modul wp_debug.

Pot vedea unde este problema dar nu știu cum să o rezolv?

Se pare că non-obiectul este apelat din array-ul taxonomiei în options.php deoarece array-ul nu poate găsi term_id pentru că nu a fost creat un articol și/sau o categorie în tipul de postare personalizat. Când creez un articol și îi atribui o categorie, notificarea dispare.

// Extrage toate taxonomiile personalizate într-un array
$options_password_taxonomies = array();
$taxonomies_password_terms_obj = get_terms('password_gallery_category');
foreach ( $taxonomies_password_terms_obj as $taxonomy) {
    $options_password_taxonomies[$taxonomy->term_id] = $taxonomy->name;
}

// Selectează o Categorie pentru Zona Clientului
$options[] = array(
    'name' => __('Galerii Protejate cu Parolă', 'shutter'),
    'desc' => __('Alege o categorie pentru galeriile clienților protejate cu parolă.', 'shutter'),
    'id' => 'client_area',
    'type' => 'select',
    'options' => $options_password_taxonomies);
0
Toate răspunsurile la întrebare 2
5

Puteți folosi isset() sau property_exists() pentru a verifica dacă proprietatea există.

foreach ( $taxonomies_password_terms_obj as $taxonomy) {
    if( isset( $taxonomy->term_id ) ){
        $options_password_taxonomies[$taxonomy->term_id] = $taxonomy->name;
    }
}
27 feb. 2013 12:26:41
Comentarii

Mulțumesc pentru asta. Rezolvă problema, dar generează o nouă notificare.

Ar trebui să postez asta ca o întrebare nouă?

Notice: Undefined index: homepage_feature in /inc/options-framework.php on line 313

Dean McCann Dean McCann
27 feb. 2013 12:38:22

Da, ar trebui să postezi ca o întrebare nouă. Înainte, mergi la acea linie și folosește încă un isset() înainte de a utiliza acea variabilă array. Ar trebui să fie rezolvat.

RRikesh RRikesh
27 feb. 2013 12:40:44

Mulțumesc. Văd că există deja un isset() în options-framework.php - dar nu pare să facă vreo diferență.

if ( ! isset( $option['id'] ) ) {

continue; }

Dean McCann Dean McCann
27 feb. 2013 12:47:48

ok, am introdus un nou isset() pentru term_id și asta pare să elimine erorile. mulțumesc că mi-ai prezentat magia lui isset() :)

Dean McCann Dean McCann
27 feb. 2013 12:50:14

ok, de fapt asta nu a rezolvat a doua mea problemă, așa că voi posta o altă întrebare.

Dean McCann Dean McCann
27 feb. 2013 14:40:38
0

folosește isset($variable_to_check) sau is_array($variable_to_check) înainte de a proceda cu foreach deoarece foreach funcționează doar cu un array de date, adică variabila ta trebuie să aibă membri

21 feb. 2020 16:40:03