連載第91回
2014年7月29日
PHP Warning: Missing argument エラーについて

 先日のWTTP Errorの件で、久し振りに長い時間webminを弄っていた際、Apacheのエラーログをチェックしていて気になるメッセージに遭遇しました。というか、ズラーッと同じエラーメッセージがリストされていて「何じゃこりゃ!ジャック・ニコルソンか?」とビックリしたのです。
 ちなみに前回のプレイリスト不具合の件ですが、頭を切り替えて「開き直りメソッド」でリベンジを検討しています。

 話を戻して、そのエラーメッセージというのは次のようなものでした。

 PHP Warning: Missing argument 3 for ps_number_cat(), called in /wp-content/themes/FLFL/index.php on line 46 and defined in /wp-content/themes/FLFL/functions.php on line 8

 どうもそのメッセージをテキトーに意訳すると「あんたが index.php の46行目で使ってる ps_number_cat()ってヤツ 、えーつまりそのー、 functions.php の8行目で宣言してる関数なんだけど、3番目の引数がミッシング」

 もちろん何のことか分からないというか、だからどうしろと?という状態だったので、ググってみました。

外部サイト参考記事
warning: missing argumentというメッセージについて(by shigemk2)

 なるほど「引数に初期値を設定すべし」というワケですね。とは言いつつ、実はまだよく分かってないんだけれど、つまりこういう事でしょうか。「これからいろいろな数値が入れ替わり立ち替わりする変数だし、まずは行動する前に $cat_id を空っぽにしておこうね」という解釈で。

functions.php:該当部のみ抜粋

//カテゴリー内の記事番号の抽出(エラー状態)
function ps_number_cat( $post_type = 'post', $op = '<=' , $cat_id ) {
global $wpdb, $post; $categories = get_the_category($post->ID);
$in_cat=0;
以下、略。

//カテゴリー内の記事番号の抽出(訂正後)
function ps_number_cat( $post_type = 'post', $op = '<=' , $cat_id = null ) {
global $wpdb, $post; $categories = get_the_category($post->ID);
$in_cat=0;
以下、略。

 訂正後のfunctions.phpをアップロードして、翌日にまたエラーログを表示させてみたら、前回から新しいログの追記は無くて、どうやらエラーが収まったようです。めでたしめでたし。つづく。