恐怖のデバッグモード
最近パソコンの前にいる時間が多すぎて目がやられそうです。
ただいまデバッグ作業を終えて安堵に満ちています。デバッグってご存知ですか?バグ直す程度にしか僕は思ってませんが・・・
デバッグ(debug)とは、コンピュータプログラムや電気機器中のバグ・欠陥を発見および修正し、動作を仕様通りのものとするための作業である。サブシステムが密結合であると、1箇所の変更が別の箇所でのバグを作り出すので、バグの修正がより困難となる。
wiki先生によるとこういうことだそうです。
WordPressにはデバッグモードなるものが存在しています。コアファイルのwp-config.phpのデバッグをtrueにするとできるんですが、いざデバッグモードにしてみると「マジか・・・」と絶望が押し寄せてきます。
デバッグモードの恐怖
なにが恐怖かって見た目上はなにも問題ない(主要ブラウザでレイアウトの修正済み)状態なのにいざデバッグモードにすると「ここがおかしいで!きっとここが問題や!」という英文がざっと出てきます。
ということで直すぞー!!!
おかしなところを修正する
今回エラーが出てきたのは2箇所(少なくてよかった・・・)でした。
関数が古いですよ!
使っていたjetpackのでOGPを自動出力しないようにするためにfunction.phpに書いていたフィルターに使っていた関数が書き方が古いようでこっちを使ってねと警告されました。
変更前
変更後
アンダーバーの有無でした。
抜粋の続きを読むのカスタマイズ部分
記事の本文はthe_content()ですが、抜粋表示場合はthe_excerpt()を使うのですが、デフォルトだと「…続きを読む」だったのでこの文言を変更するために書いていた関数の書き方が変だど言われました。
変更前
function new_excerpt_more($more) {
return ‘…<a class="view" href="’. get_permalink($post->ID) . ‘">’ . ‘read more’ . ‘</a>’;
}
add_filter(‘excerpt_more’, ‘new_excerpt_more’);[/html]
変更後
return ‘…<a class="view" href="’.get_permalink( get_the_ID() ). ‘">’.’read more’.'</a>’;
}
add_filter(‘excerpt_more’, ‘new_excerpt_more’);[/html]
変更前の書き方はネットで調べて拾ってきたものなのでなんとも言えない気持ちになりました。どうやらループの中ではget_the_ID()を使ってねと言うことでした。デバッグモードにしていなくても実際は動作していたので気付きにくいのかな・・・
結局the_excerpt()じゃなくてthe_content()を使いました。
ついでにthe_content()での抜粋方法をご紹介します。
if(mb_strlen($post->post_content,’UTF-8′)>50){
$content= str_replace(‘n’, ”, mb_substr(strip_tags($post-> post_content), 0, 49,’UTF-8′));
echo $content.’…’;
}else{
echo str_replace(‘n’, ”, strip_tags($post->post_content));
}
?>[/html]
説明すると、the_content()を出力するけど50文字超えたら49文字目まで表示して「…」をつけて表示します。ちなみにhtmlタグは消去して表示します。というやつです。
このカスタマイズは結構使えるのですが、ネットで調べてみると???て思う箇所があるので修正して使用しています。
2行目の50は50文字超えたら処理をしますよってやつで、3行目の49は表示する文字数なんですが、ネットで落ちてるのの多くがここの数字が同じなんですよね。どういうことかというと
てなるんですよね。
だから字数制限の処理よりも一文字減らしてあげると
要は字数制限の処理よりも一文字減らしてあげないと省略してないのに省略してる記号がついちゃうってことです。
まとめ
WordPressはオープンソースなのでいろんな人がカスタマイズ方法をネットに公開してますが、そのままコピペするとおかしなことになるので注意しましょう。そしておかしかったところは共有すると素敵な人間になれます。