web-dev-qa-db-fra.com

array_pop () attend array, booléen donné pour $ event_type_term -> slug

J'ai la fonction suivante que j'ai écrite…

add_filter('post_type_link', 'events_permalink_structure', 10, 4);

function events_permalink_structure($post_link, $post, $leavename, $sample) {
    if ( false !== strpos( $post_link, '%event_type%' ) ) {
        $event_type_term = get_the_terms( $post->ID, 'event_type' );
        $post_link = str_replace( '%event_type%', array_pop( $event_type_term )->slug, $post_link );
    }
    return $post_link;
}

Lors de la création d'un nouveau message, les avertissements suivants apparaissent dans le backend…

Avertissement: array_pop () s'attend à ce que le paramètre 1 soit array, booléen dans /Users/my/htdocs/wr/wp-content/themes/wr/functions.php, ligne 168

Avis: essayer d'obtenir la propriété de non-objet dans /Users/my/htdocs/wr/wp-content/themes/wr/functions.php à la ligne 168

Des idées que je fais mal ici?

Merci d'avance!

3
mathiregister

get_the_terms () renvoie probablement false.

Faites un print_r ($ event_type_term) pour voir ce que vous avez dedans.

De: http://codex.wordpress.org/Function_Reference/get_the_terms

Tableau d'objets à terme en cas de succès. False si aucun terme n'est trouvé dans la taxonomie donnée et un objet wp_error si une taxonomie non valide est entrée.

4
RRikesh