WordPressでシンプルなサイトマップを作ってみました。本日は「WordPressでプラグインを使わずにサイトマップ生成」についてです。
こんにちは。猫ITソリューションズ広報の齊藤メイ(♀)です。本日は、「WordPressでプラグインを使わずにサイトマップ生成」についてです。
元ネタはこちら。
手軽WordPress Tips:プラグインを使わず、簡単なコードでシンプルなサイトマップを作成する - かちびと.net
ただこのままだと固定ページとカテゴリーのみのサイトマップしか作れず、私の希望とはちょっと違う。なので少し改良しました。改良点は以下の通りです。
- 任意の場所に出力可能にした。
- 固定ページ/ブログカテゴリ/全てから出力内容を選択できるようにした。
- 除外ページ設定も可能にした。
使い方は、固定ページなどの使いたいところで、
1 2 3 4 5 6 7 8 |
<h3>カテゴリー</h3> [sitemap type='categories'] <h3>タグ</h3> [sitemap type='tag_cloud'] <h3>年月日アーカイブ</h3> [sitemap type='archives'] |
のように記述すればOKです。
コードは以下になります。
function.phpに貼り付けてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
//■サイトマップ(簡易) /* typeでサイトマップとして生成する対象を指定する。 all :全て pages :固定ページ categories :ブログのカテゴリー tag_cloud :タグクラウド excludeで除外するページIDを指定する。 exclude_treeで子ページを含み除外するページIDを指定する 使い方: [sitemap type='all' exclude='17,38' exclude_tree='5,10'] [sitemap type='category'] */ function simple_sitemap2($arr){ global $wpdb; //出力バッファ取得開始 ob_start(); //http://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_list_pages if($arr["type"] == "all" || $arr["type"] == "pages"){ $args = array('depth' => 0, 'show_date' => NULL, 'date_format' => get_option('date_format'), 'child_of' => 0, 'exclude' => $arr['exclude'], 'include' => NULL, 'title_li' => '<span class="subheader">固定ページの一覧</span>', 'echo' => 1, 'authors' => NULL, 'sort_column' => 'menu_order, post_title', 'link_before' => NULL, 'link_after' => NULL, 'exclude_tree' => NULL ); echo '<ul>'; wp_list_pages($args); echo '</ul>'; } //http://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_list_categories if($arr["type"] == "all" || $arr["type"] == "categories"){ $args = array('show_option_all' => NULL, 'orderby' => 'name', 'order' => 'ASC', 'show_last_update' => 0, 'style' => 'list', 'show_count' => 0, 'hide_empty' => 1, 'use_desc_for_title' => 1, 'child_of' => 0, 'feed' => NULL, 'feed_type' => NULL, 'feed_image' => NULL, 'exclude' => NULL, 'exclude_tree' => NULL, 'include' => NULL, 'hierarchical' => true, 'title_li' => '', 'number' => NULL, 'echo' => 1, 'depth' => 0, 'current_category' => 0, 'pad_counts' => 0, 'taxonomy' => 'category', 'walker' => 'Walker_Category' ); echo '<ul>'; echo wp_list_categories( $args ); echo '</ul>'; } //http://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_get_archives if($arr["type"] == "all" || $arr["type"] == "archives"){ $args = array( 'type' => 'monthly', 'limit' => '', 'format' => 'html', 'before' => '', 'after' => '', 'show_post_count' => false, 'echo' => 1, 'order' => 'DESC' ); echo '<ul>'; wp_get_archives($args); echo '</ul>'; } //http://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_tag_cloud if($arr["type"] == "all" || $arr["type"] == "tag_cloud"){ $args = array( 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45, 'format' => 'list', 'separator' => "\n", 'orderby' => 'name', 'order' => 'ASC', 'exclude' => null, 'include' => null, 'topic_count_text_callback' => default_topic_count_text, 'link' => 'view', 'taxonomy' => 'post_tag', 'echo' => true, 'child_of' => null, // 注を参照 ); wp_tag_cloud($args); } //出力バッファ取得終了 $buffer = ob_get_clean(); //バッファを出力 return $buffer; } add_shortcode('sitemap', 'simple_sitemap2'); |
ちなみに猫ITソリューションズのサイトマップで使用しています。