WordPress前バージョンの時には正常にアップロードされていたものが、バージョンアップしたらエラーが出てしまった……という事はよくある話で。
「Warning: Use of undefined constant description」を悩んだ末、放置しておいた(駄目すぎる)のが、非常に簡単に解決したので覚書き(と言うか、戒め)。
「Use of undefined constant description」は大抵簡単に解決するという話
えっ、エラーが出ていたのに何ヶ月も放置ってあり得なくないですか?…という話ですが、件のエラーは、たぶん「ほぼアクセスのない特定のページ」以外に全く影響のない部分だったので、「いずれまた……」のまま忘れていたのですね(笑)
しかし、ちょっと直す必要性が出て来たので見直してみたら3分で解決しました。ほら、放置していたおかげで頭が冷えてね……(という言い訳)
経緯
バージョンアップでエラーが出たのはこの案件ページで。
前バージョンWordpress4.9の時には正常に表示されていたものが、5.0にバージョンアップしたらエラーが出てしまった……という話です。
エラーの内容は、
73行目が「Use of undefined constant description」=「未定義の記述を使用してるよ、あんた」という事でした。
と、言われても旧バージョンの時にはきちんと表示されていたしね(困惑)
このページは登録した会員のプロフィールをダッシュボードのユーザープロフィールから「get the author meta」で引っ張ってきて表示させているものです。
しばらく悩んだり検索したりしたのですが、もしかしたら「get the author meta」が使用できなくなったのだろうか……などと考えた末、会員登録するユーザーがほとんどいなかったので「また後で……」と放置していたのです(駄目すぎる)
些細なこと
登録して下さる方がポチポチ増えて来たので、そういえば放置してたんだったと思い出し、久しぶりにコードを眺めてみたら3分で解決……。
よく見ると、エラーは「Twitter URL」や「サイトURL」の項目には出ておらず、アンケートの項目に主にツラツラと出ていました。以下がコードです。(勘の良い方はもうこの時点で分るはず……(泣))
<?php echo get_avatar(get_the_author_meta( 'user_email', $author ), 80); ?><?php the_author_meta( display_name, $author ); //ここから本文?><br />
<p>サイト: <a href=”<?php echo ( get_the_author_meta( ‘site_url’ ) ); ?>”><?php
$user_data = get_userdata($author);
if ($user_data->user_url) {
echo $user_data->user_url . “<br />”;
}
?></a></p>
<p>Twitter URL: <a href=”<?php echo ( get_the_author_meta( ‘twitter_url’ ) ); ?>”><?php
$user_data = get_userdata($author);
if ($user_data->twitter_url) {
echo $user_data->twitter_url . “<br />”;
}
?></a></p>
<p>Facebook page: <a href=”<?php echo ( get_the_author_meta( ‘facebook_url’ ) ); ?>”><?php
$user_data = get_userdata($author);
if ($user_data->facebook_url) {
echo $user_data->facebook_url . “<br />”;
}
?></a></p>
<p>Google+: <a href=”<?php echo ( get_the_author_meta( ‘Google’ ) ); ?>”><?php
$user_data = get_userdata($author);
if ($user_data->Google) {
echo $user_data->Google . “<br />”;
}
?></a></p>
<br />
<hr>
<h3>プロフィール</h3>
<?php the_author_meta( description, $author ); ?>
<h3>アンケート</h3>
<p>好きな俳優は?: <?php the_author_meta( actor, $author ); ?></p>
<p>好きな女優は?: <?php the_author_meta( actress, $author ); ?></p>
<p>好きなドラマ1位: <?php the_author_meta( best1, $author ); ?></p>
<p>好きなドラマ2位: <?php the_author_meta( best2, $author ); ?></p>
<p>好きなドラマ3位: <?php the_author_meta( best3, $author ); ?></p>
<p>好きなドラマ4位: <?php the_author_meta( best4, $author ); ?></p>
<p>好きなドラマ5位: <?php the_author_meta( best5, $author ); ?></p>
<hr>
修正後です。
<?php echo get_avatar(get_the_author_meta( 'user_email', $author ), 80); ?><?php the_author_meta( 'display_name', $author ); //ここから本文?><br />
<p>サイト: <a href=”<?php echo ( get_the_author_meta( ‘site_url’ ) ); ?>”><?php
$user_data = get_userdata($author);
if ($user_data->user_url) {
echo $user_data->user_url . “<br />”;
}
?></a></p>
<p>Twitter URL: <a href=”<?php echo ( get_the_author_meta( ‘twitter_url’ ) ); ?>”><?php
$user_data = get_userdata($author);
if ($user_data->twitter_url) {
echo $user_data->twitter_url . “<br />”;
}
?></a></p>
<p>Facebook page: <a href=”<?php echo ( get_the_author_meta( ‘facebook_url’ ) ); ?>”><?php
$user_data = get_userdata($author);
if ($user_data->facebook_url) {
echo $user_data->facebook_url . “<br />”;
}
?></a></p>
<p>Google+: <a href=”<?php echo ( get_the_author_meta( ‘Google’ ) ); ?>”><?php
$user_data = get_userdata($author);
if ($user_data->Google) {
echo $user_data->Google . “<br />”;
}
?></a></p>
<br />
<hr>
<h3>プロフィール</h3>
<?php the_author_meta( 'description', $author ); ?>
<h3>アンケート</h3>
<p>好きな俳優は?: <?php the_author_meta( 'actor', $author ); ?></p>
<p>好きな女優は?: <?php the_author_meta( 'actress', $author ); ?></p>
<p>好きなドラマ1位: <?php the_author_meta( 'best1', $author ); ?></p>
<p>好きなドラマ2位: <?php the_author_meta( 'best2', $author ); ?></p>
<p>好きなドラマ3位: <?php the_author_meta( 'best3', $author ); ?></p>
<p>好きなドラマ4位: <?php the_author_meta( 'best4', $author ); ?></p>
<p>好きなドラマ5位: <?php the_author_meta( 'best5', $author ); ?></p>
<hr>
そう……表示項目「the_author_meta( actor, $author )」ここに「’」が抜けていたのです。「( ‘actor’, $author )」が正解でした。凡ミスって本当に恐い!!
「Use of undefined constant description」エラーは記述ミス
項目に「’」を付けただけで解決し、きちんと表示されるようになりました。
後々聞いた話によると、「Use of undefined constant description」エラーの原因はほとんどが記述ミスだそうです。
あきらめないで原因を探して対処しましょう。(自分に言ってる)
コメント