backyard.weblog

Main Contents

WordPress 自作 Theme の functions.php

/ Web, WordPress / ,

Post

この記事を最後に更新したときのWordPressのヴァージョンは 3.2.1 です。

html5 & CSS3 少々な感じで Theme を作り直しました。
前のが適当すぎたので、書くモチベーションを上げるために作り直しました。

これを機に? Theme 自作の際に functions.php に必ず書いていることを晒します。

wp_head が自動挿入する meta 情報を削除する

functions.php で remove_action すれば消すことが出来ます。
必要に応じて削除でいいと思います。
下記はわたしがこの Theme で消しているものです。

<?php
    remove_action('wp_head', 'wp_generator');
    remove_action('wp_head', 'wlwmanifest_link');
    remove_action('wp_head', 'rsd_link');
    remove_action('wp_head', 'index_rel_link');
    remove_action('wp_head', 'start_post_rel_link');
    remove_action('wp_head', 'parent_post_rel_link');
    remove_action('wp_head', 'adjacent_posts_rel_link');
?>
wp_generator
WordPress のヴァージョンを表示。
wlwmanifest_link
Windows Live Writer を使ってブログ投稿をする時に必要。
rsd_link
iPhoneやPC向けブログエディタでの編集するときなどに必要。
※外部アプリケーションから情報を取得するためのプロトコルのリンクを出力[ Really Simple Discovery (RSD) ]
index_rel_link
linkタグを出力。
※現在の文書に対する『索引』であることを示す。
start_post_rel_link, parent_post_rel_link, adjacent_posts_rel_link
link rel="start", link rel="next" などを出力。

投稿に自動挿入されるタグを削除する

投稿時に自動挿入される<p>タグや<br />タグが邪魔なので消しています。
※コアファイルの add_filter をコメントアウトする方法もありますが、自動アップデートする度にコメントアウトしなければならないので functions.php に書いています。

<?php
    remove_filter('the_content', 'wpautop');
?>

抜粋文に自動挿入されるタグを削除する

わたしの場合、mixi check 用の meta に抜粋文を使用しているのですが、その際に抜粋文に自動挿入されるタグがとってもじゃまだったので、消してしまうことにしました。

<?php
    remove_filter('the_excerpt', 'wpautop');
?>

RSS をサムネイル付き抜粋文にする

facebook で RSS Graffiti というアプリを使用して Blog の更新情報を垂れ流しています。
RSSを自分の wall に読み込ませるアプリです。
このとき、『全文表示はしたくない』かといって『タイトル表示だけも味気ないし』ということで、WordPress 管理画面から RSS/Atom フィードでの各投稿の表示を『抜粋のみを表示』にしました。
けれどこれだけでは、写真が入らないのでちょっとさみしい。。
なので、下記コードを記述してサムネイル画像をプラスしています。

<?php
    function diw_post_thumbnail_feeds($content){
        global $post;
        if(has_post_thumbnail($post->ID)){
            $content = '<div>' // ※
                       . get_the_post_thumbnail($post->ID,  'thumbnail') 
                       . '</div>' . $content; // ※
    }
        return $content;
    }

    add_filter('the_excerpt_rss', 'diw_post_thumbnail_feeds');
    add_filter('the_content_feed', 'diw_post_thumbnail_feeds');
?>

※の部分は好きなタグで作ってしまって大丈夫です。
ちなみに、 get_the_post_thumbnail($post->ID, ‘thumbnail’) の部分は get_the_post_thumbnail($post->ID) だけで画像が入ります。
ただ、それだとオリジナルサイズの画像が入ってしまうので、任意のサイズを指定します。
上記コードの [ thumbnail ] というのはサムネイルサイズのことです。
WordPressの管理画面から設定できるサムネイルサイズですね。
下記のように任意のサイズを指定することもできます。

get_the_post_thumbnail($post->ID, array(100,100));

アイキャッチ画像のインターフェースを有効にする

WordPress アイキャッチ画像

WordPress 2.9 の新機能として登場していた『投稿サムネイル画像』のことで、3.0 からは『アイキャッチ画像』と呼ぶようになったあれです。
投稿一覧にサムネイル画像を表示するなどの使い方ができます。
使用している Theme がアイキャッチ画像に対応している場合は、投稿画面の右下に『アイキャッチ画像を設定』というインターフェースがありますが、ない場合はまずインターフェースを有効にする必要があります。

functions.php に下記コードを記述すると有効になります。
※全て書く必要はありません。必要に応じて下記より最低1行記述してください。

<?php
    add_theme_support( 'post-thumbnails' ); // 投稿及び固定ページで有効にする
    add_theme_support( 'post-thumbnails', array( 'post' ) ); // 投稿で有効にする
    add_theme_support( 'post-thumbnails', array( 'page' ) ); // 固定ページで有効にする
?>

アイキャッチ画像のサイズを指定する

<?php
    set_post_thumbnail_size( 190, 190, true ); // サイズを指定
?>

引数の1つ目に幅、2つ目に高さ、3つ目は true or false or 空を指定します。

3つ目の引数について

切り抜きモード :: true
指定サイズの比率で切り抜き、指定サイズまで縮小される。
リサイズモード :: false or 空
長編が指定サイズに合うまで縮小される。
100×100 が設定されている場合、300×600 の画像は 50×100 になる。

複数種類のサイズのアイキャッチ画像を用意して、出しわけることもできます。
その辺りはまた今度書きます。
WordPressでアイキャッチ画像のサイズを出し分ける]に書きました。

アイキャッチ画像を管理画面の投稿一覧にも表示する

元記事:Display Post Thumbnail Also In Edit Post and Page Overview
↓こんな感じにしているのです。

WordPress 管理画面
<?php
    if ( !function_exists('fb_AddThumbColumn') && function_exists('add_theme_support') ) {

    // for post and page
    add_theme_support('post-thumbnails', array( 'post', 'page' ) );

    function fb_AddThumbColumn($cols) {
        $cols['thumbnail'] = __('Thumbnail');
        return $cols;
    }

    function fb_AddThumbValue($column_name, $post_id) {
            $width = (int) 35;
            $height = (int) 35;
            if ( 'thumbnail' == $column_name ) {
                // thumbnail of WP 2.9
                $thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true );
                // image from gallery
                $attachments = get_children( array('post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image') );
                if ($thumbnail_id)
                    $thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true );
                elseif ($attachments) {
                    foreach ( $attachments as $attachment_id => $attachment ) {
                        $thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true );
                    }
                }
                    if ( isset($thumb) && $thumb ) {
                        echo $thumb;
                    } else {
                        echo __('None');
                    }
            }
    }

    // for posts
    add_filter( 'manage_posts_columns', 'fb_AddThumbColumn' );
    add_action( 'manage_posts_custom_column', 'fb_AddThumbValue', 10, 2 );

    // for pages
    add_filter( 'manage_pages_columns', 'fb_AddThumbColumn' );
    add_action( 'manage_pages_custom_column', 'fb_AddThumbValue', 10, 2 );
    }
?>

ウィジェットの追加

シンプルなウィジェット追加について詳しくは今度まとめて。。。
とりあえず今回はサイドに3つセットしておきました。
吐き出すタグなども変えています。インデントも変えたいんですがやりかたがまだわかりませぬ。。

<?php
    if (function_exists('register_sidebar'))
        register_sidebar(array(
        'name' => 'AddSideBar1',
        'before_title' => '<h3 class="title">', 
        'after_title' => '</h3>',
        'before_widget' => '<section class="widget-profile">',
        'after_widget' => '</section><!--/.widget-profile-->'
    ));

    if (function_exists('register_sidebar'))
        register_sidebar(array(
        'name' => 'AddSideBar2',
        'before_title' => '<h3 class="title">', 
        'after_title' => '</h3>',
        'before_widget' => '<section class="widget-banner">',
        'after_widget' => '</section><!--/.widget-banner-->'
    ));

    if (function_exists('register_sidebar'))
        register_sidebar(array(
        'name' => 'AddSideBar3',
        'before_title' => '<h3 class="title">', 
        'after_title' => '</h3>',
        'before_widget' => '<section class="widget-box">',
        'after_widget' => '</section><!--/.widget-box-->'
    ));
?>

今回の functions.php はこんな感じです。それぞれの細かい説明はちゃんと自分のために後日まとめます。

  • Check
  • このエントリーをはてなブックマークに追加
  • Clip to Evernote

Similar Posts

Add Comment

WP-SpamFree by Pole Position Marketing

Trackbacks

Trackback URL