質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

7259閲覧

Notice: Undefined offset: 0について

ryuujinn

総合スコア72

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/01/16 15:43

Notice: Undefined offset: 0 in C:\Users\xxxxxxx\Desktop\xxxxxxx\wordpress\wp-content\plugins\auto-se
t-category\auto-set-category.php on line 35

wordpress4.4.1で以下のコードのプラグインを使用したら上記のエラーがでるようになってしまいました

これはどのように改善したらいいのでしょうか?

<?php /* Plugin Name:Auto Set Category Plugin URI:http://milkveil.com/ Description:本文中にカテゴリーと同じ文字列があった場合、そのカテゴリーをセットするプラグイン。 Version:1.0 Author:taku-k Author URI:http://milkveil.com/ */ function auto_set_category ( $post_id ) { global $post; $new_post = get_post( $post_id ); $content = $new_post->post_content; /* ループ開始 全てのカテゴリーを1つ1つ調べる */ $cat_all = get_terms( "category", "fields=all&get=all" ); foreach($cat_all as $value): /* もし本文にカテゴリーと同じ文字列があれば(デフォのカテゴリーを外してから)カテゴリーを付ける */ if ( stripos( $content, $value->name ) !== false ) { wp_remove_object_terms( $post_id, 1, 'category' ); wp_add_object_terms( $post_id, $value->name, 'category' ); } /* もし本文にカテゴリーと同じ文字列が無い時はカテゴリーを外す */ else { wp_remove_object_terms( $post_id, $value->name, 'category' ); } endforeach; /* ループ終了 全てのカテゴリーを1つ1つ調べる */ /* もしカテゴリーが1つも無かったらエラーになるからデフォのカテゴリーを付ける */ $catcheck = get_the_category($post_id); if ( is_array($catcheck) && is_null($catcheck[0]) ) { wp_add_object_terms( $post_id, 1, 'category' ); } } add_action( 'save_post', 'auto_set_category' );

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

auto-set-category.phpの35行目で未定義のエラーがでています。
記載されているソースがauto-set-category.phpだとして35行目は大体しかわかりませんが、
$catcheck = get_the_category($post_id);
ここで値がとれない場合(たとえば戻り値が空のarray()の場合)、その下の
if ( is_array($catcheck) && is_null($catcheck[0]) ) {
では$catcheck[0]が定義されていないことになります。
もし原因がここだとしたらis_nullの代わりにempty()を使ってはどうでしょう?

投稿2016/01/16 20:57

編集2016/01/16 21:00
test_hf

総合スコア80

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/01/17 01:32

あんまり読んでいないのですが、 > Notice: Undefined offset: 0 ってことは、配列の0番が定義されていないエラーですから該当箇所は配列に関する >if ( is_array($catcheck) && is_null($catcheck[0]) ) { ここだと思います。なので。 >もし原因がここだとしたらis_nullの代わりにempty()を使ってはどうでしょう? では、やはり未定義エラーが出るので >if ( is_array($catcheck) && !isset($catcheck[0]) ) { となるかと思いますが、どうでしょうか?
退会済みユーザー

退会済みユーザー

2016/01/17 01:33

>/* もしカテゴリーが1つも無かったらエラーになるからデフォのカテゴリーを付ける */ ということなので、 >if ( is_array($catcheck) && count($catcheck) === 0 ) { の方がいいかな。
test_hf

2016/01/17 02:36

> >もし原因がここだとしたらis_nullの代わりにempty()を使ってはどうでしょう? > では、やはり未定義エラーが出るので 一応情報として、emptyはissetと同じで未定義エラーでませんよ。未定義の場合はtrueが返ります。
ryuujinn

2016/01/17 04:31

test_hfさん、luckerさん、コメント、解決方法ありがとうございます if ( is_array($catcheck) && count($catcheck) === 0 ) { と記述したらエラー表示が見事に消えました 何日も困っていたので大変助かりました ありがとうございました
退会済みユーザー

退会済みユーザー

2016/01/17 04:34

そしたらぜひ、雑草を刈っておいてくれたtest_hfさんのコメントに▲で+1して下さい。
退会済みユーザー

退会済みユーザー

2016/01/17 04:47

>一応情報として、emptyはissetと同じで未定義エラーでませんよ。未定義の場合はtrueが返ります。 失礼しました。そうなりますね。PHPのempty()は何年使っていても間違えます…
ryuujinn

2016/01/17 07:30

▲で+1出来るの知りませんでした luckerさん、情報ありがとうございます
test_hf

2016/01/17 12:44

luckerさんお気遣いすみません。ありがとございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問