プラグインを使わずにカスタム投稿タイプを追加する方法です。
この記事の目的
表示速度を落とさずにカスタム投稿タイプを追加します。
カスタム投稿タイプは、自分で作れる投稿タイプで、元からある投稿ページとは区別したい分類専用の投稿ページを追加できる機能です。
以前紹介したプラグイン「Custom Post Type UI」をインストールすれば初心者でも簡単に追加できるのですが、プラグインが増えれば表示速度が遅くなるのがWordPressの弱点です。
表示速度が遅くなれば、ユーザー(閲覧者)のストレスを招き、早期離脱の可能性を高めます。
しかも、SEO対策的にも好ましくない…
そこで、プラグインを使わずにソースを追加してカスタム投稿タイプを増やす方法をご紹介します。
「いや、いや!プラグインで良いよ!」と言う方は、“Custom Post Type UI”をお使いください。
【Custom Post Type UI】カスタム投稿タイプを簡単に追加できるプラグイン:設定方法・使い方
注意事項
テーマファイルを改変しますので、失敗するとサイトが表示されなくなる可能性があります。
失敗してもすぐに戻せるように、必ずファイルのバックアップを取っておきましょう。
▼バックアップするファイル
- functions.php
環境によってうまくいかない可能性がないとは言い切れませんので、自己責任でお願いします。
▼この記事の環境
- WordPress 4.8.1-ja
- STINGER 5、STINGER 7、AFFINGER
- Google Chrom
パーマリンクの設定は「投稿名」にしておきます。
ファイルの追加
今回は、例として「お知らせ」のカスタム投稿タイプを追加します。
追加するファイルは、アーカイブ・一覧・投稿の3種類。
- archive-news.php
- itiran-news.php
- single-news.php
「news」の部分は、投稿タイプ名です。
半角英数字で、3つの投稿タイプ名が同一であればなんでもかまいません。作りたい分類によってご自由に変更してください。
FTPソフトで、テーマフォルダーの中に空のファイルを新規に作成します。
- /wp-content/themes/stinger5_xxxxxxxx/archive-news.php
- /wp-content/themes/stinger5_xxxxxxxx/itiran-news.php
- /wp-content/themes/stinger5_xxxxxxxx/single-news.php
「stinger5_xxxxxxxx」の部分は、テーマフォルダー名で、AFFINGERなら「Affinger_xxxxxxxx」のようにテーマ名+バージョンナンバーがファイル名ですね。
WordPressの管理画面で[ 外観 ]→[ テーマの編集 ]の順にクリック。
右メニューに3種類のファイルが表示されていればOKです。
右メニューの[ アーカイブ(archive.php) ]をクリック。
ソースを全選択してコピーします。
先ほど作成した テンプレート[ archive-news.php ]をクリック。
ソース枠内に先ほどコピーしたソースを貼り付けます。
ソースの「」 一覧 </h2>」の前に「お知らせ」と入力。
」 一覧 </h2>
↓
お知らせ」 一覧 </h2>
ソースの「<?php get_template_part('itiran');?>」の「itiran」を「itiran-news」に修正して[ ファイルを更新 ]をクリック。
<?php get_template_part('itiran');?>
↓
<?php get_template_part('itiran-news');?>
右メニューの[ itiran.php ]をクリック。
ソースを全選択してコピーします。
先ほど作成した テンプレートの[ itiran-news.php ]をクリック。
ソース枠内に先ほどコピーしたソースを貼り付けて[ ファイルを更新 ]をクリック。
右メニューの[ 単一記事の投稿(single.php) ]をクリック。
ソースを全選択してコピーします。
先ほど作成した テンプレートの[ single-news.php ]をクリック。
ソース枠内に先ほどコピーしたソースを貼り付けます。
ぱんくずがうまく表示できるように、
<!--ぱんくず -->〜<!--ぱんくず -->までを選択して、下記のコードを貼り付けて[ ファイルを更新 ]をクリック。
<!--ぱんくず --> <div id="breadcrumb"><a href="<?php echo home_url(); ?>">ホーム</a> > <a href="/news/">お知らせ</a> > <?php foreach ( array_reverse(get_post_ancestors($post->ID)) as $parid ) { ?> <a href="<?php echo get_page_link( $parid );?>" title="<?php echo get_page($parid)->post_title; ?>"> <?php echo get_page($parid)->post_title; ?></a> > <?php } ?> </div> <!--/ ぱんくず -->
これでファイルは完成です。
次は、ファンクションにソースを追加しましょう。
ソースの追加
右メニューの[ functions.php ]をクリック。
下記のソースをコピペで追加して[ ファイル更新 ]をクリック。
// カスタム投稿タイプカテゴリ&タグ作成[お知らせ] add_action('init', 'create_news_taxonomies'); function create_news_taxonomies() { // タグを作成 $labels = array( 'name' => 'Webタグ', //複数系のときのタグ名 'singular_name' => 'Webタグ', //単数系のときのタグ名 'search_items' => 'Webタグを検索', 'all_items' => '全てのWebタグ', 'parent_item' => null, 'parent_item_colon' => null, 'edit_item' => 'Webタグを編集', 'update_item' => 'Webタグを更新', 'add_new_item' => '新規Webタグを追加', 'new_item_name' => '新規Webタグ', 'separate_items_with_commas' => 'Webタグをコンマで区切る', 'add_or_remove_items' => 'Webタグを追加or削除する', 'choose_from_most_used' => 'よく使われているWebタグから選択', 'not_found' => 'アイテムは見つかりませんでした', 'menu_name' => 'Webタグ' //ダッシュボードのサイドバーメニュー名 ); $args = array( 'hierarchical' => false, 'labels' => $labels, 'update_count_callback' => '_update_post_term_count', //タグの動作に必要なCallback設定 'rewrite' => array( 'slug' => 'news_tag' ) ); register_taxonomy( 'news_tag', 'news', $args ); } // カスタム投稿タイプ作成[お知らせ] add_action('init', 'add_news_post_type'); function add_news_post_type() { $params = array( 'labels' => array( 'name' => 'お知らせ', 'singular_name' => 'お知らせ', 'add_new' => '新規追加', 'add_new_item' => '新規追加', 'edit_item' => 'お知らせ編集', 'new_item' => '新規追加', 'all_items' => '投稿一覧', 'view_item' => '説明を見る', 'search_items' => '検索する', 'not_found' => 'お知らせデータが見つかりませんでした。', 'not_found_in_trash' => 'ゴミ箱内にお知らせデータが見つかりませんでした。' ), 'public' => true, 'has_archive' => true, 'supports' => array( 'title', 'editor', 'tag', 'custom-fields', 'comments', ), 'taxonomies' => array('news_category','news_tag') ); register_post_type('news', $params); }
別のカスタム投稿タイプを追加する場合は、7箇所ある「お知らせ」と10箇所ある「news」の部分を変更することで、いくつでも追加できます。