Avviso: Tentativo di ottenere una proprietà di un non-oggetto in options.php

27 feb 2013, 12:04:56
Visualizzazioni: 22.9K
Voti: 0

Sto ricevendo il seguente avviso nel mio options.php quando testo il mio tema in modalità wp_debug.

Riesco a vedere dove si trova il problema ma non so come risolverlo.

Sembra che il non-oggetto venga chiamato dall'array della tassonomia in options.php poiché l'array non riesce a trovare il term_id perché non è stato creato un post e/o una categoria nel tipo di post personalizzato. Quando creo un post e gli assegno una categoria, l'avviso scompare.

// Inserisce tutte le tassonomie personalizzate in 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;
}

// Seleziona una Categoria per la tua Area Client
$options[] = array(
    'name' => __('Gallerie Protette da Password', 'shutter'),
    'desc' => __('Scegli una categoria per le gallerie client protette da password.', 'shutter'),
    'id' => 'client_area',
    'type' => 'select',
    'options' => $options_password_taxonomies);
0
Tutte le risposte alla domanda 2
5

Puoi usare isset() o property_exists() per verificare se la proprietà esiste.

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
Commenti

Grazie per questo. Risolve il problema ma genera un nuovo avviso.

Dovrei pubblicarlo come una nuova domanda?

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

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

Sì, dovresti pubblicarlo come una nuova domanda. Prima, vai a quella riga e usa un altro isset() prima di utilizzare quella variabile array. Dovrebbe risolvere il problema.

RRikesh RRikesh
27 feb 2013 12:40:44

Grazie. Vedo che c'è già un isset() in options-framework.php - ma questo non sembra fare differenza.

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

continue; }

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

ok, ho aggiunto un nuovo isset() per term_id e sembra che questo abbia risolto gli errori. grazie per avermi introdotto alla magia di isset() :)

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

ok in realtà questo non ha risolto il mio secondo problema, quindi pubblicherò un'altra domanda.

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

utilizza isset($variable_to_check) oppure is_array($variable_to_check) prima di procedere con foreach poiché foreach funziona solo con un array di dati cioè la tua variabile deve contenere elementi

21 feb 2020 16:40:03