件名の通りです。
固定ページや投稿のみを取得する関数はありましたが、
カテゴリーページやAuthorページなど あらゆるページのURLが欲しいです。
ヒントがあれば 教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
回答1件
0
ベストアンサー
Google XML Sitemapsなどのsitemapを作成するプラグインを使用していることが前提になりますが、sitemap.xmlから以下の方法で取得できそうです。
Google XML Sitemapsプラグインの「Sitemap コンテンツ」設定の選択によりsitemapへ出力される内容が変わるので、プラグインの設定により出力結果が変わります。月別アーカイブなどのページが取得できなかったので、完全に動的な場合は対応出来ないかもしれません。
実現できるかの確認なのでエラー処理などは省略しています。
php
1<?php 2 3function get_page_list( $sitemap_url, &$urls = null ) { 4 $sitemap = simplexml_load_file( $sitemap_url ); 5 6 if ($urls === null) { 7 $urls = array(); 8 } 9 10 foreach ( $sitemap->sitemap as $url ) { 11 $url = get_object_vars( $url )['loc']; 12 get_page_list( $url, $urls ); 13 } 14 foreach ( $sitemap->url as $page ) { 15 $page_info = get_object_vars( $page ); 16 $urls[] = urldecode( $page_info['loc'] ); 17 } 18 19 return $urls; 20} 21 22# 一覧を取得するページのsitemap.xmlへのurlを指定 23# 結果は文字列配列で返されます 24$urls = get_page_list( 'http://example.com/sitemap.xml' ); 25foreach ( $urls as $url ) { 26 echo $url . PHP_EOL; 27}
投稿2018/04/28 19:34
編集2018/04/28 20:48総合スコア263
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
2018/04/28 19:36
2018/05/13 14:03