web-dev-qa-db-ja.com

警告:array_pop()はパラメータ1が配列であることを想定しています。

新しい投稿を追加しようとしたときに次のphpエラーが表示されます。

警告:array_pop()はパラメータ1が配列であることを想定しています。ブール値は/home/mysite/public_html/blog/wp-content/themes/mytheme/functions.phpの675行目

これが関数です:

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

問題とは何か、どのようにして解決するのかという考えはありますか。

2
frshjb373

get_the_terms()は、状況によってはbooleanfalseを返します。

用語が割り当てられていない投稿は、空の配列ではなく、誤った結果をもたらします。

https://codex.wordpress.org/Function_Reference/get_the_terms#Returns

それが起こっていることのようですね。それを使うことを試みる前にそれがあなたが期待するtypeであることを確かめるためにその$post_link =をチェックする必要があります。

1
s_ha_dum