いつかfixされるだろうと思いつつ…無視できない量のログになりソース対応したときのメモ。
■プラグインAll In One SEO Pack バージョン 2.7.2(今日現在)
※おそらく2.6あたりからPHP Notice発生
このプラグインを利用して、会員制サイト等でアクセス制御しているポストタイプに nofollow 設定していたり、検索エンジンに画像を follow されないように設定しているサイトは、ログを確認してみるとよいかもしれません。
現象
AIOSEOP「一般設定」の「NOINDEX設定」(以下はデフォルト設定)で、
「B」でチェックしている一覧ページがあり、
- カテゴリーページ
- 日付アーカイブページ
- 投稿者ページ
- タグページ
- 検索ページ
- 404ページ
- タクソノミーページ(タクソノミがあるときに表示される)
「A」でnofollow 設定しているポストタイプがあると、PHP Noticeがでます。
Debug LogPHP Notice: Undefined variable: post_type in /..../plugins/all-in-one-seo-pack/aioseop_class.php on line 4159
ただし、
・「C」の「ページ付けされたページ/投稿にnofollowを使用」にチェックしていて、2ページ目以降の場合は、Noticeはでません。
・一覧ページによっては、1件目の投稿/ページに個別でnofollowを設定している場合も、Noticeはでません。
(先に評価されるので)
対応
下記の変数$post_type が未定義であることが原因。
【変更前】aioseop_class.php : line 4157~4162// #322: duplicating this code so that we don't step on some other entities' toes.
if ( ( 'on' === $aiosp_nofollow ) || ( ( ! empty( $aioseop_options['aiosp_paginated_nofollow'] ) ) && $page > 1 ) ||
( ( '' === $aiosp_nofollow ) && ( ! empty( $aioseop_options['aiosp_cpostnofollow'] ) ) && in_array( $post_type, $aioseop_options['aiosp_cpostnofollow'] ) )
) {
$nofollow = 'nofollow';
}
// #322: duplicating this code so that we don't step on some other entities' toes.
このコードが含まれているif文のelseに同じコードがあるのですが、そのコードをこちらにも応急処置的に追加した際に、$post_typeの宣言と値代入のコードを追加し忘れたのでしょう。
で、同じように$post_typeの宣言を入れます。
【変更後】aioseop_class.php$post_type = get_post_type(); // @@@ 追加
// #322: duplicating this code so that we don't step on some other entities' toes.
if ( ( 'on' === $aiosp_nofollow ) || ( ( ! empty( $aioseop_options['aiosp_paginated_nofollow'] ) ) && $page > 1 ) ||
( ( '' === $aiosp_nofollow ) && ( ! empty( $aioseop_options['aiosp_cpostnofollow'] ) ) && in_array( $post_type, $aioseop_options['aiosp_cpostnofollow'] ) )
) {
$nofollow = 'nofollow';
}
// #322: duplicating this code so that we don't step on some other entities' toes.
これで、PHP Noticeはなくなります。
本来の目的は、noindexを設定したこれらの一覧ページに、nofollow を設定してあれば、nofollowにすることなので、$aiosp_nofollow が on か "" かは条件に入れなくてもいんじゃない?という気も。
どちらにしても、$post_typeの定義は必要。
$post_type = get_post_type();
AIOSEOPバージョン履歴
ALL IN ONE SEO PACK RELEASE HISTORY
https://semperfiwebdesign.com/all-in-one-seo-pack-release-history/