inoma-NOTE

自分のためのメモじゃ

カテゴリー・タグも含めた新しい投稿タイプを追加する方法【WordPress】

既存の「投稿」以外に、新しく追加する方法。

  1. 追加したいタイプのphpデータを作る
  2. functioncs.phpで作ったデータを呼び出す

追加したいタイプのphpデータを作る

タイトル.phpで作成。
サンプルとして「sample.php」と表記。

<?php


add_action( 'init', 'custom_post_sample' );


function custom_post_sample() {

//管理画面で表示される
    $labels = array(
        'name'              => _x( 'サンプル', 'sample' ),
        'singular_name'      => _x( 'サンプル', 'sample' ),
        'add_new'            => _x( '新規作成', 'sample' ),
        'add_new_item'      => _x( '新規サンプルを追加', 'sample' ),
        'all_items'          => _x( 'サンプル一覧', 'sample' ),
        'edit_item'          => _x( 'サンプルを編集', 'sample' ),
        'new_item'          => _x( '新しいサンプル', 'sample' ),
        'view_item'          => _x( 'サンプルを見る', 'sample' ),
        'search_items'      => _x( 'サンプルを検索', 'sample' ),
        'not_found'          => _x( 'サンプルが見つかりません', 'sample' ),
        'not_found_in_trash' => _x( 'ゴミ箱にサンプルはありません', 'sample' ),
        'parent_item_colon'  => _x( '親サンプル:', 'sample' ),
        'menu_name'          => _x( 'サンプル', 'sample' ),
    );

//投稿タイプの種類やサポート
    $args = array(
        'labels'              => $labels,
        'hierarchical'        => false,
        'supports'            => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'sticky'),
        'public'              => true,
        'show_ui'            => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'  => true,
        'publicly_queryable'  => true,
        'exclude_from_search' => false,
        'has_archive'        => true,
        'query_var'          => true,
        'can_export'          => true,
        'rewrite'            => array( 'slug' => 'sample' ),
        'capability_type'    => 'post',
        'menu_icon'  => 'dashicons-carrot',//Wordpress Dashicons参照
    );


    register_post_type( 'sample', $args );


    //カテゴリー設定
    register_taxonomy('sample_cat','sample',
    array(
      'label'        => 'サンプルカテゴリー',
      'labels'        => array(
      'popular_items' => 'よく使うイベントカテゴリー',
      'edit_item'    => 'イベントカテゴリーを編集',
      'add_new_item'  => '新規イベントカテゴリーを追加',
      'search_items'  => 'イベントカテゴリーを検索',
      ),
      'public'      => true,
      'hierarchical' => true,
      'rewrite'      => array('slug' => 'sample/cat')
    )
  );
    //タグ設定
    register_taxonomy('sample_tag','sample',
    array(
      'label'        => 'サンプルタグ',
      'labels'        => array(
      'popular_items' => 'よく使うイベントタグ',
      'edit_item'    => 'イベントタグを編集',
      'add_new_item'  => '新規イベントタグを追加',
      'search_items'  => 'イベントタグを検索',
      ),
      'public'      => true,
      'hierarchical' => true,
      'rewrite'      => array('slug' => 'sample/tag')
    )
  );
    flush_rewrite_rules();
}
add_rewrite_rule('sample/cat/([^/]+)/?$', 'index.php?sample_cat=$matches[1]', 'top');
add_rewrite_rule('sample/tag/([^/]+)/?$', 'index.php?sample_tag=$matches[1]', 'top');


?>

新しく作った投稿タイプのURLが、sample/~となるように、パーマリンク設定でカスタム構造を選び「%category%」を追加することを推奨。

menu_iconは投稿タイプのアイコン。
Wordpress Dashiconsというサイトでコピペをして好きなアイコンに変更できる。
https://developer.wordpress.org/resource/dashicons/

functioncs.phpで作ったデータを呼び出す

作ったsample.phpを任意のフォルダを新しく作り入れる。
名前は好きなように。
フォルダが無いままでも可能だが、後々増えたりすることも考えて新しく作っておくといいかも。
f:id:inoma_design:20160612220204j:plain

functions.phpは下記の通り記述

<?php
// カスタム投稿タイプ呼び出し
require_once( 'custompost/sample.php' );
?>

これで追加は完了。

ちなみにsample.phpの記述をそのままfunctions.phpに書いてもok。
しかしややこしくなるのでこうして新しくファイルを作るといいかも。

続き
追加したカスタム投稿タイプをページで表示する方法【WordPressinoma-design.hatenablog.com