目次
エラーメッセージ全文
Notice: Undefined offset: 0 in 該当箇所までのファイルパス on line 行数
エラー該当コード
$post_type = get_post_type();
$taxonomies = get_object_taxonomies($post_type);
$terms = get_the_terms(get_the_ID(), $taxonomies[0]) //エラー該当コード
エラーメッセージの意味
このエラーメッセージ “Notice: Undefined offset: 0” は、配列 $taxonomies
の最初の要素にアクセスしようとしたときに、その要素が存在しない場合に発生します。これは、$taxonomies
配列が空であるか、少なくとも1つの要素も持っていない場合に起こります。
NoticeエラーなのでPHPプログラムの実行は停止されません。
エラーを解決するには
要素が存在するかを確かめれば良いです。
具体的にif文を追加すればエラーがなくなります。
if(isset($taxonomies[0])) {
$terms = get_the_terms(get_the_ID(), $taxonomies[0]);
}
関数について説明
get_post_type()
投稿タイプを取得します。
var_dump()の結果
カスタム投稿タイプが「column」の場合
$post_type = get_post_type();
var_dump($post_type);
string(6) "column"
get_object_taxonomies()
特定の投稿タイプやカスタム投稿タイプに関連付けられたタクソノミー(カテゴリーやタグなど)の一覧を取得するために使用されます。この関数を使用すると、特定の投稿タイプに関連付けられているタクソノミーの名前を取得できます。
引数に$post_type
が必要です。
var_dump()の結果
カスタムタクソノミーが「column_category」の場合
$taxonomies
は配列だとわかります。
$post_type = get_post_type();
$taxonomies = get_object_taxonomies($post_type);
var_dump($taxonomies);
array(1) {
[0]=>
string(15) "column_category"
}
get_the_terms
カスタム投稿タイプのカテゴリー名やスラッグ名などのタームの情報を取得するために使用されます。
引数には$post_id
と$taxonomy
を指定します。
var_dumpの結果
現在表示しているページの投稿タイプが「column」でコラムカテゴリーが「review」の場合
$post_type = get_post_type();
$taxonomies = get_object_taxonomies($post_type);
$terms = get_the_terms(get_the_ID(), $taxonomies[0]);
var_dump($terms);
array(1) {
[0]=>
object(WP_Term)#11422 (11) {
["term_id"]=>
int(441)
["name"]=>
string(12) "レビュー"
["slug"]=>
string(36) "review"
["term_group"]=>
int(0)
["term_taxonomy_id"]=>
int(441)
["taxonomy"]=>
string(15) "column_category"
["description"]=>
string(0) ""
["parent"]=>
int(0)
["count"]=>
int(17)
["filter"]=>
string(3) "raw"
["term_order"]=>
string(1) "5"
}
}
第2引数を$taxonomies[0]としている理由
$taxonomiesは配列のため、「Notice: Array to string conversion inエラー」が発生します。
PHPで配列を文字列に変換しようとした場合に発生するエラーメッセージです。
インデックス番号[0]をつけることで「文字列」として出力し、エラーを回避できます。
$taxonomiesは配列のため、「Notice: Array to string conversion inエラー」が発生します。
PHPで配列を文字列に変換しようとした場合に発生するエラーメッセージです。
インデックス番号[0]をつけることで「文字列」として出力し、エラーを回避できます。
まとめ
Notice: Undefined offset: 0 inのエラーはif文を使って要素が存在するかを確かめることでエラーを消すことができます。