【WordPress】カスタム投稿タイプとカスタム分類の実装方法(プラグインありなし)

wordpress-logo-stacked-rgb

2012年06月13日(水)

  今回実装するのは、 ・カスタム投稿タイプ ・カスタム分類 の方法を備忘録として残したいと思う。 実際やったのは、 ・プラグインを使う方法 ・プラグインを使わない方法 をおこなったので、だれかの足しになればと思います。     — プラグインを使った方法 — ぼくの場合は以下のプラグインを使用しました。 日本語記述なのでわりとさっくりと進むことができました。 では、始めます。 □Custom Post Type UI インストールしたら左サイドバーへ「Custom Post Types」が追加されます。 Custom Post Types->Add New クリック。                   少し解説すると、   カスタム投稿タイプは、 通常の投稿とは別セグメントでの投稿が可能になるやり方。   カスタム分類は、 その投稿でもジャンル等を分類して投稿が可能になるやり方。     あってるかな? たぶん間違ってはいないと思うw         [カスタム投稿タイプ] 投稿タイプ名:カスタム投稿タイプの名前。 →URLになるので英語での記入がベター。 ラベル:カスタム投稿タイプの表示名。 →空白でもOK。 単数形のラベル:空白でOK。 説明:カスタム投稿タイプの説明文。空白でもOK。   [カスタム分類(タクソノミー)を追加する際] 分類名:カスタム投稿タイプの分類名。 ラベル:分類名の表示名。 単数形のラベル:空白でOK。 利用する投稿タイプ:作成するタイプの選択。投稿か固定ページか。 →投稿タイプを追加すると選択肢がそれに応じて追加されていく。     上記項目を入力すると、 管理画面左のバーに追加した投稿タイプが表示されます。   その追加された投稿タイプで投稿する事が出来ます。 ここまでは簡単ですね♪                   次が少しめんどくさいところですが、 この投稿を表示に反映させなければいけません。 そのためには少しばかりプログラムを書かなければいけません。   サンプルとしては以下になると思います。  
<?php if (have_posts()) : query_posts(‘post_type=intro&showposts=3’); ?> <?php while (have_posts()) : the_post(); ?> <h2><a href=”<?php the_permalink() ?>”><?php the_time(“Y年m月d日(D)”); ?><?php the_title(); ?></a></h2> <!–<div class=”entry”><?php the_content(); ?></div>–> <?php endwhile;?> <?php else : ?> Not Found. <?php endif; ?> <?php wp_reset_query(); ?>
  これを表示させたい箇所に記述します。 具体的に何をやっているかというと…   実はまだWordPress初心者なので関数の意味は分かりませんが、 1行目の   query_posts(‘post_type=intro&showposts=3’)   で、上記に最初に投稿したpost_typeを指定しております。 (ここでいう1時限目はintoroで設定したのでそのパラメータを設定) また、showpostsで件数を指定しております。   で、   表示させたいデータをthe_time()とかで表示させているわけです。 これでプラグインの解説は終了となります。     もっといろんなデータを取得したいとかあると思いますが、 その際はWordPressのマニュアルを読んで該当のデータを抜き出しましょう。     — プラグインを使わない方法 — さて、最初にいっておきますが、 結構他社さまブログ等をみると、こちらのパターンを推薦する方が多くいたので、 僕もやってみました。   が、   現在の所特に使わない方法でのメリットが見いだせておりません。。。 迷ったらプラグインを使いましょう!ww それで実装できないようなものであれば、 こちらが少しでも参考になればよいと思います。   では、はじめます。   まず、プラグインでいうところの、 管理画面の左バーへの表示方法ですが、   themesディレクトリにある、functions.phpファイルを編集します。   最初に実際に記述したコードを載せます。  
add_action(‘init’, ‘my_custom_post_type’); function my_custom_post_type() { $labels = array( ‘name’ => _x(‘更新履歴’, ‘post type general name’), ‘singular_name’ => _x(‘更新履歴’, ‘post type singular name’), ‘add_new’ => _x(‘新しい更新履歴を追加’, ‘book’), ‘add_new_item’ => __(‘新しい更新履歴を追加’), ‘edit_item’ => __(‘更新履歴を編集’), ‘new_item’ => __(‘新しい更新履歴’), ‘view_item’ => __(‘更新履歴を編集’), ‘search_items’ => __(‘更新履歴を探す’), ‘not_found’ => __(‘更新履歴はありません’), ‘not_found_in_trash’ => __(‘ゴミ箱に更新履歴はありません’), ‘parent_item_colon’ => ” ); $args = array( ‘labels’ => $labels, ‘public’ => true, ‘publicly_queryable’ => true, ‘show_ui’ => true, ‘query_var’ => true, ‘rewrite’ => true, ‘capability_type’ => ‘post’, ‘hierarchical’ => false, ‘menu_position’ => 5, ‘supports’ => array(‘title’,’editor’) ); register_post_type(‘news’,$args); }
  なんか前述で書いたプラグインの項目と似ていますね? そうなんです、あの入力項目と対応してますよね。 こちらの項目を埋めると、 とりあえずは管理画面の左バーに反映されます。                     表示されました。 そして次にカスタム分類のやり方ですが、 先ほどのカスタム分類に紐づけてやってみます。   以下がそのサンプルコードになります。
add_action( ‘init’, ‘create_my_taxonomies’, 0 ); function create_my_taxonomies() { // 経済 register_taxonomy( ‘Economy’, ‘news’, array( ‘hierarchical’ => false, ‘label’ => ‘経済’, ‘query_var’ => true, ‘rewrite’ => true ) ); // アダルト register_taxonomy( ‘Adult’, array( ‘news’ ), array( ‘hierarchical’ => false, ‘label’ => ‘アダルト’, ‘query_var’ => true, ‘rewrite’ => true ) ); }
  少し解説すると、 register_taxonomy() のなかで詳細を記述しております。 1個目は分類の名前。 2個目は投稿先の名前(ここではNewsに分類をつけるのでNewsと設定) 3個目は・・・ あとは調べてみてください。w大体わかると思いますけど!ww         で、管理画面を表示してみましょう。                   できました!!! あとはコンテンツページへの表示方法ですが、 サンプルとしては以下になると思います。  
<!– カスタム投稿 –> <?php if (have_posts()) : query_posts(‘post_type=news&showposts=3’); ?> <?php while (have_posts()) : the_post(); ?> <h2><a href=”<?php the_permalink() ?>”><?php the_time(“Y年m月d日(D)”); ?><?php the_title(); ?></a></h2> <!–<div class=”entry”><?php the_content(); ?></div>–> <!– カスタム分類 –> <?php $taxo_list = get_the_term_list( $post->ID, ‘Economy’, ‘<strong>カスタム分類:</strong> ‘, ‘, ‘, ” ); if ( $taxo_list ): ?> <span class=”taxo-links”> <span class=”entry-utility-prep entry-utility-prep-tag-links”><?php echo $taxo_list; ?> </span> <span class=”meta-sep”>|</span> <?php endif; ?> <?php $taxo_list = get_the_term_list( $post->ID, ‘adult’, ‘<strong>カスタム分類:</strong> ‘, ‘, ‘, ” ); if ( $taxo_list ): ?> <span class=”taxo-links”> <span class=”entry-utility-prep entry-utility-prep-tag-links”><?php echo $taxo_list; ?> </span> <span class=”meta-sep”>|</span> <?php endif; ?> <!– カスタム分類 end –> <?php endwhile;?> <?php else : ?> Not Found. <?php endif; ?> <?php wp_reset_query(); ?> <!– カスタム投稿 end –>
  コメントのカスタム投稿のところは先ほどもやりましたので問題ないかと。 注目のカスタム分類(タクソノミー)のところですが、   get_the_term_list()   で、第二引数で取得したい分類を入力する事によってデータを取得しています。 で表示させてみると・・・                     まぁ今回はこんなところですかね!! WordPress祭りがはじまってきてるぜー!! ではでは。    

スポンサードリンク

運営サービスPR

スポンサードリンク

運営サービスPR