web-dev-qa-db-ja.com

array_pop()は$ event_type_term - > slugに与えられたブール値の配列を期待します

私が書いた以下の機能があります…

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;
}

新しい投稿を作成すると、バックエンドに次のような警告が表示されます。

警告:array_pop()はパラメータ1が配列であることを想定しています。ブール値は/Users/my/htdocs/wr/wp-content/themes/wr/functions.php行168にあります。

Notice:/Users/my/htdocs/wr/wp-content/themes/wr/functions.phpの168行目で、オブジェクト以外のプロパティを取得しようとしています

ここで私が間違っていることについて何か考えはありますか?

前もって感謝します!

3
mathiregister

get_the_terms()はおそらくfalseを返しています。

Print_r($ event_type_term)を実行して、自分の持っているものを確認してください。

から: http://codex.wordpress.org/Function_Reference/get_the_terms

成功時のtermオブジェクトの配列指定された分類法に用語が見つからない場合はfalse、無効な分類法が入力された場合はwp_errorオブジェクトを返します。

4
RRikesh