📑
PHPのバージョンアップ(⇒v8)に伴いは発生したエラー
wordpressで下記のエラー

サーバに入って確認してみると、下記の該当するthorのSEOのOGPのphpロジックでエラーが発生しているようでした。phpのバグフィックスはせずにwordpress側の投稿の運用回避で対応します。
php.php
Warning: Undefined array key 0 in /home/nishitaku/www/bike.nissylifetech.com/wp-content/themes/the-thor/inc/seo/ogp.php on line 77
Warning: Attempt to read property "cat_ID" on null in /home/nishitaku/www/bike.nissylifetech.com/wp-content/themes/the-thor/inc/seo/ogp.php on line 77
```php.php
```php:ogp.php
<?php
////////////////////////////////////////////////////////
//SEO<OGP>設定
////////////////////////////////////////////////////////
function fit_ogp_date(){
echo '<meta property="og:site_name" content="'.get_bloginfo('name').'" />'."\n";
if (is_singular()){
echo '<meta property="og:type" content="article" />'."\n";
}else {
echo '<meta property="og:type" content="website" />'."\n";
}
if (is_singular()){
echo '<meta property="og:title" content="'.get_the_title().'" />'."\n";
if(fit_meta_description()){
echo '<meta property="og:description" content="'.fit_meta_description().'" />'."\n";
}elseif(have_posts()){
while ( have_posts() ) {
the_post();
echo '<meta property="og:description" content="'.mb_substr(get_the_excerpt(), 0, 120).'" />'."\n";
}
}
echo '<meta property="og:url" content="'.get_the_permalink().'" />'."\n";
}
elseif ( is_front_page() && get_option( 'show_on_front' ) == 'page' ) {
if ( get_post_meta(get_the_ID(), 'title', true) ) {
echo '<meta property="og:title" content="'.get_post_meta(get_the_ID(), 'title', true).'" />'."\n";
}
else{
echo '<meta property="og:title" content="'.get_the_title().'" />'."\n";
}
if(fit_meta_description()){
echo '<meta property="og:description" content="'.fit_meta_description().'" />'."\n";
}
else{
echo '<meta property="og:description" content="'.get_bloginfo('description').'" />'."\n";
}
echo '<meta property="og:url" content="'.get_home_url().'" />'."\n";
}
elseif ( is_front_page() && get_option( 'show_on_front' ) == 'posts' ) {
if ( get_option('fit_seoTop_title') ) {
echo '<meta property="og:title" content="'.get_option('fit_seoTop_title').'" />'."\n";
}else{
echo '<meta property="og:title" content="'.get_bloginfo( 'name' ).'" />'."\n";
}
if(get_option('fit_seoTop_description')){
echo '<meta property="og:description" content="'.get_option('fit_seoTop_description').'" />'."\n";
}else{
echo '<meta property="og:description" content="'.get_bloginfo('description').'" />'."\n";
}
echo '<meta property="og:url" content="'.get_home_url().'" />'."\n";
}
else {
echo '<meta property="og:title" content="'.wp_get_document_title().'" />'."\n";
if (fit_meta_description()) {
echo '<meta property="og:description" content="'.fit_meta_description().'" />'."\n";
}
else{
echo '<meta property="og:description" content="'.get_bloginfo('description').'" />'."\n";
}
if(is_year()){
echo '<meta property="og:url" content="'.get_year_link('').'" />'."\n";
}
elseif(is_month()){
echo '<meta property="og:url" content="'.get_month_link('', '').'" />'."\n";
}
elseif(is_day()){
echo '<meta property="og:url" content="'.get_day_link('', '', '').'" />'."\n";
}
elseif(is_author()){
echo '<meta property="og:url" content="'.get_author_posts_url(get_the_author_meta( 'ID' )).'" />'."\n";
}
elseif(is_search()){
echo '<meta property="og:url" content="'.get_search_link().'" />'."\n";
}
elseif(is_category()){
$cat = get_the_category();
$cat_id = $cat[0]->cat_ID;
echo '<meta property="og:url" content="'.get_category_link($cat_id).'" />'."\n";
}
elseif(is_tag()){
$tag = get_the_tags();
$tag_id = $tag[0]->term_id;
echo '<meta property="og:url" content="'.get_tag_link($tag_id).'" />'."\n";
}
else{
echo '<meta property="og:url" content="'.get_home_url().'" />'."\n";
}
}
if (is_singular()){
if (has_post_thumbnail()){//投稿にサムネイルがある場合
$image_id = get_post_thumbnail_id();
$image = wp_get_attachment_image_src( $image_id, 'icatch768');
echo '<meta property="og:image" content="'.$image[0].'" />'."\n";
}
elseif(get_fit_image_ogp()){//投稿にサムネイルが無く、OGP用画像がある場合
echo '<meta property="og:image" content="'.get_fit_image_ogp().'" />'."\n";
}
else{//何も無い場合
echo '<meta property="og:image" content="'.get_template_directory_uri().'/img/img_no_768.gif" />'."\n";
}
}
else {
if(get_fit_image_ogp()){
echo '<meta property="og:image" content="'.get_fit_image_ogp().'" />'."\n";
}
else{
echo '<meta property="og:image" content="'.get_template_directory_uri().'/img/img_no_768.gif" />'."\n";
}
}
if ( get_option('fit_snsOgp_TwitterCard')) {
echo '<meta name="twitter:card" content="'.get_option('fit_snsOgp_TwitterCard').'" />'."\n";
}
else{
echo '<meta name="twitter:card" content="summary" />'."\n";
}
$opt = get_option('fit_snsFollow');
if ( $opt['twitterId']) {
echo '<meta name="twitter:site" content="@'.$opt['twitterId'].'" />'."\n";
}
if ( get_option('fit_snsOgp_FBAppId')) {
echo '<meta property="fb:app_id" content="'.get_option('fit_snsOgp_FBAppId').'" />'."\n";
}
if ( get_option('fit_snsOgp_FBAdmins')) {
echo '<meta property="fb:admins" content="'.get_option('fit_snsOgp_FBAdmins').'" />'."\n";
}
}
php.php
76 $cat = get_the_category();
77 $cat_id = $cat[0]->cat_ID;
カテゴリーに含まれる記事が存在しないとget_the_category()でエラーが発生するので
下記のようにphp側を修正するバグ修正できる想定。
fix.php
elseif(is_category()){
$cat = get_the_category();
if(!empty($cat) && isset($cat[0]->cat_ID)){
$cat_id = $cat[0]->cat_ID;
echo '<meta property="og:url" content="'.get_category_link($cat_id).'" />'."\n";
}
}
今回は、php側に手を入れずにWP側の運用回避でカテゴリーに必ず一つ記事を含めることにする。
Discussion