LIGのメルマガ、はじめました!
LIGのメルマガ、はじめました!
2012.07.12

wordpressで作ったサイトをスマフォ対応にする「wptouch」のfunctions.phpを共通化する方法

おっしー

お疲れチャンドンゴン!

最高のギャグを世界に向けて発信してしまった。おっしーです。
オヤジギャグにはついてこれなくても記事は読んで頂きたいです。宜しくお願い致します。
さて、早速ですがwptouchのfunctions.phpをPCサイトのfunctions.phpと共通化する方法について説明していきます。
まずはwp-content/plugins/wptouch/themes/wordpress/functions.phpにPCのfunctions.phpを読み込ませましょう~

functions.php

include( 
dirname(__FILE__) . 
'/../../../../themes/wordpress/functions.php'
 );

これでOK!!
と思うじゃないですか。しかし開発途中だとCannot redeclare ほにゃららってエラーが出力されるかもしれないです。
これはPC用とスマフォ用のfunctions.phpに記述されている関数名が重複してしまっておりどちらを呼べばいいのかしらマスター?というエラーなので不要な関数を消しちゃいましょ~。
まぁ、そんなの言われなくても理解してらっしゃいますよねー。
他にwptouchで困った所ですがスマフォ用にサムネイル画像のサイズを指定したかったので指定してみると・・・

functions.php

add_theme_support('post-thumbnails');
// 画像サイズ 幅300×高さ450でリサイズします。
set_post_thumbnail_size( 300, 450, true );

あれれ?リサイズがされない?

天の声「バカだなぁ、おっしー。core-functions.phpをちゃんと見たのかい?」

うん、見てない!
という事で見てみる事に。

wptouch/themes/core/core-functions.php
241行目辺り

function wptouch_thumbnail_size( $size ) {
 $size = 'thumbnail';
 return $size;
}

268行目辺り

add_filter( 'post_thumbnail_size', 'wptouch_thumbnail_size' );

はい、フィルターかかってますね。
いくらサイズ指定しようが管理画面での設定されたサイズでリサイズかかりますよね。

※ここの設定です
setting
このサイズ指定触りたくないな、と思った場合remove_filterをかけちゃいましょー

wptouch:functions.php

remove_filter('the_content', 'wptouch_thumbnail_size');

こんな感じで。サイズ指定も書かないとネ

add_image_size(
'任意の名前',
横幅,
高さ,
縮小時に切り抜きする場合はtrue、しない場合はfalseを指定(省略時はfalse)。
);

こんな感じで解決しました。検索しても何処にもremove_filterの話が無かったのは何故なんだろう?皆さんどうされていたのだろうか。
以上、wptouchのfunctions.phpをPCと共通化する方法でした。