サーバーのPHP72でWp-Queryのエラー

2018年9月4日にサイト制作しているとWp-Queryでエラーが表示されました。そのサイトはXサーバーでこの時点で最新のPHP72が使用されています。PHP56で数年かけて作ったコードがPHP70でエラー表示された悪夢の再現?

ページ内リンク

PHP72のサーバー会社

調べてみるとこの時点でPHP72を使用しているレンタルサーバー会社はXサーバー、バリュードメイン、サクラサーバー等すでに多数ありました。
Xサーバーだけというわけではないようです。
つまりHaradaWebが利用しているコアサーバーもPHP72になっています。

外部参考サイト:FastCGI版PHP 各バージョンのPHP設定法 | 基本的な質問 | よくある質問 | レンタルサーバー CORESERVER(コアサーバー) – 30日間無料お試し

しかし最近の忙しさにかまけてPHP72の存在さえ分かっていませんでしたし、当然バージョンアップもしていません。

問題のWp-Queryのエラー

問題が発生したのはサイトに「関連情報」を設置していた時です。

WordPressのプラグインを利用すればいいのだろうが、関連情報のプラグインはどうにも扱いにくく感じます。
プラグインによっては関連情報のタイトルに「h3」が設定されているし、CSSも色んなところに「!important」が設定されていて、カスタマイズさせない感が強いと感じます。

そんな理由で自家製の関連情報をWp-Queryで作っています。

サイト内リンク:WordPressでプラグインなしの「関連記事」を作る | HaradaWeb(ハラダウェブ)

<?php 
    $PostId = get_the_ID();
    $GetCat=get_the_category(); 
    $PostCat=$GetCat[0];
?>
<?php 
$qqposts = new WP_Query( 
	array(
			'cat'=>$PostCat->cat_ID,
			'post__not_in' => array($PostId),
			'orderby'=>date,
			'order'=>DESC,
			'posts_per_page' => 5
	));
if ( $qqposts->have_posts() ) :
	while ( $qqposts->have_posts() ) : $qqposts->the_post();
?>
 
<div class="kanren">
	<div class="kanren-title">
		<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
	</div>
	<div class="kanren-content">
		<?php the_content(''); ?>
	</div>
	<div class="kanren-sub">
		<span class="kanren-date">
			<?php echo get_the_date(); ?>
		</span>
		<span class="kanren-cat">
			<?php the_category(' '); ?>
		</span>
	</div>
</div>
 
<?php endwhile;
	wp_reset_postdata();
else :?>
現在関連情報はありません。
<?php endif;
?>

ここに注意

2018年9月4日まで上記の様に

<?php 
$qqposts = new WP_Query( 
	array(
			'cat'=>$PostCat->cat_ID,
			'post__not_in' => array($PostId),
			'orderby'=>date,
			'order'=>DESC,
			'posts_per_page' => 5
	));

と記載していました。
しかしこれがサーバーのPHP72でエラー予告表示されます。

エラーの内容は

Warning: Use of undefined constant date – assumed ‘date’ (this will throw an Error in a future version of PHP) in /home/haradaweb/haradaweb.com/public_html/ccwp/wp-haradaweb/themes/wordpress17-child/template-parts/post/content.php on line

Warning: Use of undefined constant DESC – assumed ‘DESC’ (this will throw an Error in a future version of PHP) in /home/haradaweb/haradaweb.com/public_html/ccwp/wp-haradaweb/themes/wordpress17-child/template-parts/post/content.php on line

‘orderby’=>date,’order’=>DESC,」がエラーになります。

必要な部分を翻訳すると

警告:定義されていない定数の使用date – ‘date'(これはPHPの将来のバージョンではエラーを投げます)

警告:定義されていない定数の使用DESC – ‘DESC'(これはPHPの将来のバージョンではエラーを投げます)

となります。

つまり

「今は警告だが、将来はエラーだ」という事です。
何がエラーか推測すると「’orderby’=>date,’order’=>DESC,」は設定しなくてもデフォルトで設定されている内容です。
何も設定しなくても「’orderby’=>date,’order’=>DESC,」となるわけです。
それを設定していると、考え方によっては二重で設定していることになる?
だからエラーなのではないかと推測しています。

まとめ

‘orderby’=>date,’order’=>DESC,」この二つを削除するとエラー警告は消えました。
削除してもデフォルトで設定されているため影響はなく、投稿日の新しい順に表示されます。

「’orderby’=>date,’order’=>DESC,」だけでなく、こういう必要のないパラメータを「念の為」の様に付けているコードが大量にあります。

やはりコードは忠実に描いていかなければ、相手は「念の為」等通用しないコンピーターなのだから。

TOP