WPAdsを使わない時のために

広告等をランダム表示できるプラグインWPAdsをテーマに組み込んでいて、その組み込んだゾーンが空になった場合、何も出力されなくなるので、空divになってしまったり、テーマが崩れる事があるので、その対策。

wpadsはprint文が書いてあるだけなので、wpadsの中で呼んでるget_wpadsを使う。
get_wpadsだとhtmlを返してくれるので、これを変数に入れてissetで中身が入ってるかどうかがわかる。

うちの場合はこんな感じ。

1
2
3
4
5
6
7
8
<?php $wpads = get_wpads('header'); ?>
<?php if(isset($wpads)): ?>
<div id="ad">
    <div id="ad_inner">
        <?php echo $wpads; ?>
    </div>
</div>
<?php endif ?>

get_wpads(‘header’)の結果を変数$wpadsに代入。
変数$wpadsが空じゃなかったら、周りのdiv要素とechoで変数$wpadsの中身を出力。

<textarea> には初期値となるテキストを指定しておきましょう。

Another HTML-lint gatewayでチェックすると個別ページで

「<textarea> には初期値となるテキストを指定しておきましょう。」

っていわれる。
入力用フォームなら初期値とか要らない気がするんだが、何かしら文字を出しておくのも悪くないかなと思って初期値を入れてみることにした。

1
2
3
    <p>
        <textarea name="comment" id="comment" cols="45" rows="10" tabindex="4">コメントして下さい。</textarea>
    </p>

テーマのcomments.phpに上記のように初期値を追加。
これで、100点だ。

しかし、このままだとボタンを押されると「コメントして下さい。」の文字が送信されてしまう。
そこの制御はJavascriptさんに任せることにします。

上の検索フォームで使ってるソースを流用。*1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$(document).ready(function(){
  var defmsg = 'コメントして下さい。';
  $('#comment').blur(function(){
      var $$=$(this);
      if($$.val()=='' || defmsg==$$.attr('value')){
        $$.css('color', '#7F7F7F').val(defmsg);
      }
    })
    .focus(function(){
      var $$=$(this);
      if(defmsg==$$.attr('value')){
        $(this).css('color', '#000000').val('');
      }
    })
    .parents('form:first').submit(function(){
      var $$=$('#comment');
      if(defmsg==$$.attr('value')){
        $$.triggerHandler('focus');
      }
    }).end()
    .blur();
});

これで、フォームがアクティブになると「コメントして下さい。」の文字が消え。
かつ、初期値のままでは投稿できないようになりましたとさ。

脚注

  1. jQueryを使用 [戻る]

_wp_unfiltered_html_comment

WordPressにログインした状態のコメントフォーム内のid属性値に”_wp_unfiltered_html_comment”ってのがある。

id値はアンダーバーから始まっちゃダメだろ…

まぁ、別に何か問題があるというわけではないんだが、FirefoxにHtml Validatorをインストールしてると警告マークが付いて気になってしょうがない。

というわけで、最初のアンダーバーを取って”wp_unfiltered_html_comment”にする。

dw2009071802 550x265  wp unfiltered html comment

プラグインが使ってるかもしれないから、一応Grepした方がいいよ。

Another HTML-lintで100点を目指せ

現状

dw2009071701 550x364 Another HTML lintで100点を目指せ

すでに、「よくできました。」である。
もうゴールしても良さそうな点数だけど、気になるので修正。

上へ参ります。