WordPressの案件で、最近はカスタムページで対応することが多いです。
何回もやってるのに覚えていられなくてすぐ忘れてしまうカスタムページの作り方といつも本当に忘れることを明日の自分にあててメモしておきます。
自分的パーマリンクの設定はこれでsu.
/%category%/%post_id%.html
ページがリンク切れになってしまうとかで、「おろ?」となった時には
http://www.yusk.org/memo/wp/permalink_custom.html
Yuskさんブログの「パーマリンクのカスタム構造でハマった時の色々まとめ」ページを見たりします。
カスタムページの手順です。さんこうにしたのはこちらとか
カスタム投稿タイプとカスタムタクソノミーをプラグインを使わずに実現する
http://www.yusk.org/memo/wp/custom-post-type_custom-taxonomy.html
WordPressのカスタム投稿タイプでメンバー紹介ページを作成
http://www.webcreatorbox.com/tech/custom-post-type/
WordPressのカスタム投稿タイプを企業サイトに使う場合の(超個人的)決定版
コードゲットだぜ
http://themergency.com/generators/wordpress-custom-post-types/
functions.phpに足してみます。
/*-- カスタム投稿ページ--------------------------------------------------------------------------*/ /*--------------カスタムメニュー--------------*/ /* ★newsここらから★ */ $labels = array( 'name' => _x( 'お知らせ', 'info' ), 'singular_name' => _x( 'お知らせ', 'info' ), 'add_new' => _x( '新規作成', 'info' ), 'add_new_item' => _x( '新しく追加 - お知らせ', 'info' ), 'edit_item' => _x( '編集 - お知らせ', 'info' ), 'new_item' => _x( '新規追加 - お知らせ', 'info' ), 'view_item' => _x( '表示 - お知らせ', 'info' ), 'search_items' => _x( '検索 - お知らせ', 'info' ), 'not_found' => _x( 'ページが見つかりません', 'info' ), 'not_found_in_trash' => _x( 'ゴミ箱にはありません', 'info' ), 'parent_item_colon' => _x( '新しいお知らせ:', 'info' ), 'menu_name' => _x( 'お知らせ', 'info' ), ); $args = array( 'labels' => $labels, 'hierarchical' => true, 'supports' => array( 'title', 'editor' ), 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 10, 'show_in_nav_menus' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'has_archive' => true, 'query_var' => true, 'can_export' => true, 'rewrite' => true, 'capability_type' => 'post' ); register_post_type( 'info', $args ); /* カスタムタクソノミーを定義 */ register_taxonomy( 'news_cat', 'news', array( 'label' => 'カテゴリー', 'hierarchical' => true, 'rewrite' => array('slug' => 'news') ) ); /* カスタムタクソノミーを定義ここまで */ /* 管理画面一覧にカテゴリを表示 */ function manage_news_columns($columns) { $columns['news_category'] = "カテゴリー"; return $columns; } function add_news_column($column_name, $post_id){ if( $column_name == 'news_category' ) { //カテゴリー名取得 if( 'news_category' == $column_name ) { $news_category = get_the_term_list($post_id, 'news_cat', '', ', ', '' ); } //該当カテゴリーがない場合「なし」を表示 if ( isset($news_category) && $news_category ) { echo $news_category; } else { echo __('None'); } } } add_filter('manage_edit-news_columns', 'manage_news_columns'); add_action('manage_posts_custom_column', 'add_news_column', 10, 2); /* 管理画面一覧にカテゴリを表示ここまで */ /* ★newsここまで★ */ /* Rewrite まとめて記載*/ /* post_id.htmlにRewrite 複数アドレスを置き換えたい場合 参考: http://webpaprika.com/387.html まとめて記載*/ /*---- ここから ----*/ add_action('init', 'myposttype_rewrite'); function myposttype_rewrite() { global $wp_rewrite; /*お知らせ*/ $queryarg = 'post_type=info&p='; $wp_rewrite->add_rewrite_tag('%info_id%', '([^/]+)',$queryarg); $wp_rewrite->add_permastruct('info', '/info/%info_id%.html', false); } add_filter('post_type_link', 'myposttype_permalink', 1, 3); function myposttype_permalink($post_link, $id = 0, $leavename) { global $wp_rewrite; $post = &get_post($id); if ( is_wp_error( $post ) ) return $post; $newlink = $wp_rewrite->get_extra_permastruct($post->post_type); $newlink = str_replace('%'.$post->post_type.'_id%', $post->ID, $newlink); $newlink = home_url(user_trailingslashit($newlink)); return $newlink; } /*----ここまで----*/
ここkara ここまで のコードでパーマリンクを
/%category%/%post_id%.html
にしたときに書き換えられていい感じのURLになります。