PengNote

勉強した事や行った場所の感想を書くブログ

WordPressのカスタム投稿タイプをfunctions.phpからプラグインに移行した

以前、別に運営しているWordPressを用いたサイトでカスタム投稿タイプを実装しました。

その際勉強したかった事もあって、自作テーマのfunctions.phpにコードを書いて実装しました。

こんな感じ。大体Codexに載っているものそのままだった気がします。

functions.php

<?php
// カスタム投稿タイプ
add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'event',
    array(
      'labels' => array(
        'name' => __( 'イベント情報' ),
        'singular_name' => __( 'イベント情報' )
      ),
      'public' => true,
      'menu_position' => 5,// 投稿の下
      'supports' => array('title', 'editor', 'thumbnail', 'author', 'revisions')
    )
  );
}
?>

実際動いていた(動作確認: WordPress 4.3.1)のですが、先日開催されたWordCamp Kansai 2015で、Plugin Territoryの話をチラッと聞いて( ゚д゚)ハッ!となったわけです。

Plugin Territory

プラグインテリトリーと言うのは、テーマに依存せずそのサイトの設定になるような項目

参考:

WordPressのテーマを作る時に気をつけている事 | Cntlog

Plugin Territory – WordPressのその処理はテーマでやるべきかプラグインでやるべきか? | Firegoby

Analyticsとかカスタム投稿タイプとかテーマ変えて消えたら困る機能とかはプラグインで本体側に実装しろよみたいな話?

ちょくちょくプラグインで導入しましたって人見かけて、え~コードで実装出来んじゃんって思ってたけどこういうことだったの…。

今回扱ってるサイトも過去に1, 2度テーマを変えた事が有ったんですけど、そろそろまた変えるんじゃないかなーと思い、今回のプラグイン導入に至りました。消えると怖いし。

Custom Post Type UIの導入

とりあえずググったら出たし、更新もわりと最近だったのでコレを導入しました。

WordPress › Custom Post Type UI « WordPress Plugins

いつもどおり、管理画面のプラグインの所から検索してインストール、有効化です。

するとサイドバー下に項目が現れるので、そこから add/edit Post Types を選択して早速カスタム投稿タイプを作ります。

サイドバーに項目が現れた

上で書いたコードを元にこんな感じで入力しました。

Custom Post Type UIの設定画面。上のコードを元に入力した

他にも右の項目で例えば以下のことなんかも設定できるようです。

  • サイドバーでの表示(label)
  • メニューの位置
  • カスタム投稿タイプでサポートするもの
    • エディター
    • サムネイル
    • カスタムフィールド
    • etc.

あとはSave Pot Typeをクリックするだけ。

カスタム投稿タイプの表示

表示するためのコードは以前使っていたものから変更の必要はありませんでした。

今回編集したサイトでは少し変わった出力を行っていたので、分かりやすいCodexのものを拝借しました。

<?php
$args = array( ‘post_type’ => ‘event’, ‘posts_per_page’ => 10 );
$loop = new WP_Query( $args );

while ( $loop->have_posts() ) : $loop->the_post(); the_title(); echo ‘<div class=“entry-content”>’; the_content(); echo ‘</div>’; endwhile; ?>

まとめ

Custom Post Type UIを導入するだけで簡単にカスタム投稿タイプが実装できました。

実装も早いしこっちでやっちゃう方が良いのかなー