WordPressのテーマの作り方その4

WordPressテーマの作り方その4。今回はfunctions.phpについてです。

functions.phpとはテーマ内で使用する関数や設定等が記述されるファイルです。
functions.phpはテーマが設定されている間、常時読み込まれているファイルです。管理画面を見ているときでもしっかり読み込まれています。ですので、複数のテンプレートファイルで同じコードを関数化、ないしクラス化して使い回すことができます。

つまりは、
[php]
function hello(){
echo "Hello World!!";
}
[/php]

等という関数をfunctions.phpで定義しておくと、どのテンプレートファイルからも呼び出して使うことができる、ということです。WordPressのプラグインも基本的には同じような仕組みで動いていますので、プラグインでできることは大抵functions.phpに記述することが可能です。ただ、余り大がかりだと管理運用で面倒が発生すると思われるので、そういう場合はプラグイン化する方が良い気がします。

また、ウィジェットエリアの定義、各種機能の有効化もこのファイルに記述することでなされています。
とりあえず、よく使う物を書き並べていきます。

抜粋を指定した文字数で丸めて表示。
[php]
define("TRIMMARKER","…");

function the_trimed_excerpt($trim = 200){
echo(mb_strimwidth(get_the_excerpt(), 0, $trim, TRIMMARKER));
}
[/php]

Google Analyticsをログイン中のユーザー以外に表示。
[php]
//Google Analytics
function print_ga($uanum){

if(!is_user_logged_in()){ ?>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push([‘_setAccount’, ‘<?php echo $uanum;?>’]);
_gaq.push([‘_trackPageview’]);

(function() {
var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;
ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;
var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<?php
}
}
[/php]

ウィジェットの有効化、タグの設定。
[php]
//Apply Wiget
if ( function_exists(‘register_sidebar’) ){
register_sidebar(array(
‘before_widget’ => ‘<section class="wiget">’,
‘after_widget’ => ‘</section>’,
‘before_title’ => ‘<h1 class="widgettitle">’,
‘after_title’ => ‘</h1>’,
));
}
[/php]

カスタムメニューの有効化。
[php]
//Apply Custom Menu
add_theme_support(‘nav-menus’);
if ( function_exists(‘register_nav_menu’) ){
register_nav_menu(‘primary’,’nav’);
}

[/php]

wp_head()からjQueryを出力させるコード。
[php]
//Add jQuery
function regular_add_jQuery(){
wp_enqueue_script(‘jquery’);
}
add_action(‘wp_print_scripts’,’regular_add_jQuery’);
[/php]

投稿サムネイルを有効にする。
[php]
//Apply post-thumbnails
add_theme_support( ‘post-thumbnails’ );
[/php]

RSSパサー
[php]
//Get RSS
function get_RSS($rssUrl,$args){

$defaults = array(
"maxitems" => 3,
"datestyle" => "Y.m.d"
);

$args = wp_parse_args( $args, $defaults );

include_once(ABSPATH . WPINC . ‘/rss.php’);
$rss = fetch_rss($rssUrl);
$items = array_slice($rss->items, 0, $args["maxitems"]);

foreach ( $items as $item ) :
if(isset($item["pubdate"])){
$pubdate =strtotime($item["pubdate"]);
}
if(isset($item["dc"]["date"])){
$pubdate = strtotime($item["dc"]["date"]);
}

$date = date($args["datestyle"],$pubdate);
$title = $item[‘title’];
$link = $item[‘link’];
?>
<li class="entry">
<time pubdate datetime="<?php echo date("Y-m-d",$pubdate);?>"><?php echo $pubdate;?></time>
<a href="<?php echo $link; ?>"><?php echo $title ?></a>
</li>

<?php endforeach;
}

?>

[/php]

等、PHPが使える人だったらかなりの柔軟なカスタマイズを行えるようになっています。
また、デザインとプログラムの分離をすることで、テンプレートの可読性が向上するというのもこのファイルがあることのメリットでしょう。