DESIGN
ブログ構築時にfunctions.phpに追加した便利機能
- ARTICLE - No.14
- issue-2015.5.20
- 2,478 views
Posted by Keisuke Aratsu
POP1280
ブログ構築時のまとめ、またまたWORDPRESS編です。
僕はWORDPRESSががっつり使えるタイプではないので自分が追加したい機能を調べながら進めていきました。これがいい感じに勉強になる。
今回少しこだわった事はmusic,design,lifeの3カテゴリーでそれぞれの記事の投稿順を取得するという事。本当は全ての投稿を連番で取得していきたかったんだけど、今回はジャンル毎の投稿順を取得するというところで落ち着きました。
何でこれでいいと思ったかというと、連番で取得してしまうとカテゴリー別の記事投稿数が分かりづらくなってしまうなと思ったからです。なのでこのままでいいかなと。
あとはこの前記事にしたカスタム投稿の記事をRSSに取得出来るようにするところ。特にこだわったのはこの2つくらいであとはサムネイルを表示させるための記述とか、ごくごく一般的なものしか使っていません。
という訳で僕がfunctions.phpに記述した機能を紹介していきます。
1. カスタム投稿タイプの追加
これでデフォルトで実装されている「投稿」以外のジャンルをダッシュボードに追加する事ができます。
僕はこの記述を使って、「music」「design」「life」の3カテゴリーを追加しました。musicでカスタム投稿を作る場合、ソースは以下の通り。
function new_post_type() { //musicというカスタム投稿タイプを登録 register_post_type( 'music',//投稿タイプ名(識別子) array( 'label' => 'music', //カスタム投稿タイプの名前(管理画面のメニューに表示される) 'labels' => array( //管理画面に表示されるラベルを指定 'add_new_item' => '新規投稿を追加', 'edit_item' =>'musicの編集', 'view_item' => 'musicを表示', 'search_items' => 'musicを検索', 'not_found' => 'musicは見つかりませんでした。', 'not_found_in_trash' => 'ゴミ箱にmusicはありませんでした。', ), 'public' => true,// 管理画面に表示しサイト上にも表示する 'hierarchicla' => false,//コンテンツを階層構造にするかどうか(投稿記事と同様に時系列に) 'has_archive' => true,//trueにすると投稿した記事の一覧ページを作成 'with_front' => true, 'supports' => array(//記事編集画面に表示する項目を配列で指定することができる 'title',//タイトル 'editor',//本文(の編集機能) 'thumbnail',//アイキャッチ画像 'excerpt',//抜粋 'custom-fields' ), 'menu_position' => 6//「投稿」の下に追加 ) ); flush_rewrite_rules(); } add_action('init', 'new_post_type');
これで管理画面にカスタム投稿が追加されます。
「music」と書かれている箇所を任意のものに変えてあげれば大丈夫です。
2. サムネイルの追加
この記述を追加すると投稿画面にサムネイル登録画面が追加されるようになります。
これがあると記事毎にアイキャッチを設定できるようになります。必ず必要になってくるし、使ってない人はいないんじゃないだろうか。
add_theme_support( 'post-thumbnails' );
3. 記事の投稿順取得
上にも書いたようにここには結構こだわりがあったので結構時間をかけて調べたりしました。
結果ジャンル毎に投稿順を取得できたらOKという事で以下の記述で対応しました。
function ps_number( $post_type = 'post', $op = '<=' ) { global $wpdb, $post; $post_type = is_array($post_type) ? implode("','", $post_type) : $post_type; $number = $wpdb->get_var(" SELECT COUNT( * ) FROM $wpdb->posts WHERE post_date {$op} '{$post->post_date}' AND post_status = 'publish' AND post_type = ('{$post_type}') "); return $number; }
この記述で取得、そして表示させたい場所に
<?php echo ps_number(); ?>
と記述すればOK
4. 記事の抜粋
投稿した記事の先頭を抜粋する際に何文字取得するかという指定。
少し長めに取得して文字数の指定もしたかったので付け加えました。
function new_excerpt_mblength($length) { return 400; } add_filter('excerpt_mblength', 'new_excerpt_mblength');
この記述で取得、表示させたい場所に
<?php echo mb_substr(get_the_excerpt(), 0, 400); ?>
と記述すればOK
5. カスタム投稿RSSの取得
これについては以前記事にしたのでそちら参照で。
これ結構ハマったし、同じ事を考えている方はどうも多いようで、ジワジワとアクセスが伸びていってます。
とまぁこんな感じで便利な機能を追加してます。
functions.phpのカスタムについては調べるとたくさん記事が出てくるので使いたい機能があれば調べてみるといいかも。