wordpressは簡単にサイトやブログが作れる~、というのが売りで、たしかに配布テーマだとびっくりするほど簡単です。
が、ウェブ制作としてゼロからテーマ構築するとあの機能もいるこの機能もいるwordpressのデフォルトのこの機能は逆に殺さなきゃ……といった箇所が頻発します。
で、その「機能」を追加していくのがfunciton.php。
こちらは私がwordpressのいろんな案件をこなすうちに、「これはどのサイト作りでもとりあえず無心に入れておいてよさそう」という機能が確定してきました。
ここにまとめます。
目次
titleタグをheadタグ内に出力させる
実はデフォで存在しないっぽい機能です。
//functions.php
function setup_my_theme() {
add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'setup_my_theme');
画像パスへのショートコード
エディタでテンプレートファイル内への画像パスのショートコード指定ができて便利。
これやらないとフルパスで書くことになったり移転したりファイル移動したり(あんまりないだろうけど)するとリンク切れに。
//imgurl
function my_img_shortcode() {
return get_template_directory_uri().'/images/';
}
add_shortcode('img', 'my_img_shortcode');
サイトURLのショートコード
画像パスと同じ。
//siteurl
function shortcode_surl() {
return site_url();
}
add_shortcode('surl', 'shortcode_surl');
固定ページの自動整形(pとかbrとか)無効
これ入れないと意図しないレイアウトになることがままあり。
投稿だと逆に入れておいたほうが便利です。
add_filter('the_content', 'wpautop_filter', 9);
function wpautop_filter($content) {
global $post;
$remove_filter = false;
$arr_types = array('page'); //自動整形を無効にする投稿タイプを記述 =固定ページ
$post_type = get_post_type( $post->ID );
if (in_array($post_type, $arr_types)){
$remove_filter = true;
}
if ( $remove_filter ) {
remove_filter('the_content', 'wpautop');
remove_filter('the_excerpt', 'wpautop');
}
return $content;
}
スマホとそれ以外で内容を出し分けたいとき用関数
おもに動画の処理とかで使うかんじ。
実際の使い方はis_homeとかといっしょ。
function is_mobile(){
$useragents = array(
'iPhone', // iPhone
'iPod', // iPod touch
'Android.*Mobile', // 1.5+ Android *** Only mobile
'Windows.*Phone', // *** Windows Phone
'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']);
}
ゼロからテンプレートつくるときは細かいあれこれの追加の繰り返し
ありものテンプレは便利だけども、時としてゼロから作ったほうが手数も要望も短距離でかなえられる、というパターンもあります。
が、ゼロからのときはこういう細かい機能が抜けないようにしたいですね。