WordPress Dreamweaverが文字コードを誤変換し、カスタムフィールドが表示されないことがあった

WordPress のカスタムフィールドがなぜか正常に表示されず、数時間ハマりました。

Dreamwaver(CS3)上で編集していたphpファイルを保存するとき、文字コードがShift_jisに変換されてしまうことがあり、そのせいでif文が日本語を誤認識して、falseになっていたようです。

TerapadでUTF-8に書き換えて保存しなおすと、問題無く動作しました。

CSS imgタグで埋め込んだ画像の下に出来る余白を消す

imgタグで埋め込んだ画像の下に余白が出来ることがある。

imgタグはインライン要素であり、テキストと同じように「行」の中に表示されているので、何も指定しないと行の下端ではなく、ベースラインに揃えられるため。

これを回避するにはCSSで以下のように指定すると良い。

vertical-align:bottom;

WordPress PCとスマートフォンとでHTML等を切り替える

PCとスマートフォンとでHTML等を切り替えます。

<?php

//PCかスマートフォンかで条件分岐
//header関数を使ってリダイレクトしたい場合は、HTML出力の前(DOCTYPE宣言より前)に記述する。

function is_mobile () {
$useragents = array(
'iPhone', // Apple iPhone
'iPod', // Apple iPod touch
'Android', // 1.5+ Android
'dream', // Pre 1.5 Android
'CUPCAKE', // 1.5+ Android
'blackberry9500', // Storm
'blackberry9530', // Storm
'blackberry9520', // Storm v2
'blackberry9550', // Storm v2
'blackberry9800', // Torch
'webOS', // Palm Pre Experimental
'incognito', // Other iPhone browser
'webmate' // Other iPhone browser
);
$pattern = '/'.implode('|', $useragents).'/i';
return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']);
}
?>
<?php if (is_mobile()) { ?>
例えば、ここに追加したいHTML等を記述する
<!?php } ?>

WordPress PCとiPhoneとでCSSを切り替える

iPhone用のCSSを別個に作り、デバイスの幅によって使用するCSSを切り替えます。

<link rel="stylesheet" type="text/css" media="only screen and (max-device-width:480px)" href="<?php bloginfo('template_url'); ?>/iphone.css"/>
<link rel="stylesheet" type="text/css" media="screen and (min-device-width:481px)" href="<?php bloginfo('template_url'); ?>/style.css" />

WordPress query_posts()に配列形式でパラメータを渡す

<?php query_posts(); ?> のパラメータは配列形式array() で指定することもできます。

<?php $myquery = array(
   パラメータ => 値,
   パラメータ => 値,
   パラメータ => 値
); ?>
<?php query_posts($myquery); ?>

パラメータや値が文字列の場合はそれぞれをシングルクォートで囲みます。

例えば、

<?php query_posts('posts_per_page = 1'); ?>

を配列形式のarray() を利用して記述すると、

<?php $myquery = array( 'posts_per_page' => 1 ); ?>
<?php query_posts($myquery); ?>

WordPress 最初の数件と残りの数件とで表示方法を変える

最初の数件と残りの数件とで表示方法を変えるには、2つの種類の記事ループを続けて記述するとよいです。

例えば、最初の3件と、残りの7件とでループの表示方法を変える場合は以下のように記述します。

//まず最初のループ勝利を記述
<?php query_posts('posts_per_page=3'); ?>
<?php if(have_posts()): while(have_posts()):the_post(); ?>
     //最初の3件の記事に対するループ処理を記述 アイキャッチ画像や概要表示など
<?php endwhile; endif; ?>

//続けて二つ目のループ処理を記述
<ul>
<?php query_posts('posts_per_page=7&offset=3'); ?>
<?php if(have_posts()): while(have_posts()):the_post(); ?>
     //ここに残りの7件の記事に対するループ処理を記述 タイトルと投稿年月日のみなど
<?php endwhile; endif; ?>
</ul>