WordPressでスマートフォンなどのデバイス対応をする際、WPtouchやWP Mobile Detectorなどなどのプラグインを使ってスマートフォン用にテーマを切り替えている方も多いと思います。
今回は、そんなWordPressでデバイスによってテーマの切り替えを行っている方向けに、ちょっとしたおすすめTipsを紹介しておこうと思います。
WordPressを中心に、F1とか読書とか写真とか
WordPressでスマートフォンなどのデバイス対応をする際、WPtouchやWP Mobile Detectorなどなどのプラグインを使ってスマートフォン用にテーマを切り替えている方も多いと思います。
今回は、そんなWordPressでデバイスによってテーマの切り替えを行っている方向けに、ちょっとしたおすすめTipsを紹介しておこうと思います。
body_classで出力されるclassに最上位のルートのページのスラッグを含むclass名が追加されるようになります。子ページ全部で同じcssを利用できるので、特定のツリーだけ配色を変更したいときなど便利にですよね。さらに、汎用化しているので固定ページだけじゃなくて、階層サポートしたのカスタム投稿タイプでも利用できます。
class名は、{投稿タイプスラッグ}-category-{ページのスラッグ}という命名規則にしてますが、このあたりはお好みで。
$post_type . '-category-' . $post->post_name
の部分を変えてくださいな。
function add_page_root_body_class( $classes ) { if ( is_singular() ) { $post_type = get_query_var( 'post_type' ); if ( is_page() ) { $post_type = 'page'; } if ( $post_type && is_post_type_hierarchical( $post_type ) ) { global $post; if ( $post->ancestors ) { $root = $post->ancestors[count($post->ancestors) - 1]; $root_post = get_post( $root ); $classes[] = esc_attr( $post_type . '-category-' . $root_post->post_name ); } else { $classes[] = esc_attr( $post_type . '-category-' . $post->post_name ); } } } return $classes; } add_filter( 'body_class', 'add_page_root_body_class' );
WordPressの日付別アーカイブのtitleタグが「2012 3月 15」みたいに中途半端な表示になっているのが気になったので調整してみることにしました。
こんな感じのやつね。
修正前
<title> 2012 2月 28</title>
こんな感じで、うまく行くはず。。。
function jp_date_archive_wp_title( $title ) { $title = trim( $title ); if ( is_date() ) { $replaces = array( '/([1-9]{1}[0-9]{3})/' => '$1年', '/ ([0-9]{1,2}) /' => ' $1日 ', '/ ([0-9]{1,2})$/' => ' $1日', '/[\s]+/' => ' ' ); $title = preg_replace( array_keys( $replaces ), $replaces, $title ); } return $title; } add_filter( 'wp_title', 'jp_date_archive_wp_title', 10 );
修正後
<title>2012年 2月 28日</title>
wp_titleのパラメーターでうまくいかない場合があったら、教えてください。
新着情報などにNewマークを表示させたいなどの要望はよくあることですね。
今回は、表示する記事が新着や更新かどうかの判別用コードを紹介します。
ある日、Twitterで @poyosi さんがこんな事をつぶやいていて
実は内心「40も50も入れるかフツー?」などと思っていたのはおくびにも出さず聞いていると、夜中にもかかわらず各所から反応があって
意外にニーズがあるのかもと考えを改め、そんなわけで、ちょっぴり興味を持って取り組んでみることにしました。