拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
ページのアドレスからブログ記事等のIDを求める
Facebookのニュースフィードを読んでいたときに、以下のような投稿を見つけました。
MTで吐き出したアーカイブのURLから、エントリーIDって逆算できるのかなぁ。
この方法を紹介します。
個々のページのアドレスと、そのページに関する情報の対応は、「mt_fileinfo」というテーブルに保存されています。
このテーブルは、ダイナミックパブリッシングの際に、ページのアドレスから、その元になっているブログ記事等の情報を得る際に使われています。
ブログ記事のアーカイブページのアドレスから、そのブログ記事のIDを調べるには、以下のようなSQLを実行します。
ただし、アーカイブページのアドレスには、「http://ホスト名」を除いた部分を指定します。
SELECT fileinfo_entry_id FROM mt_fileinfo WHERE fileinfo_url = 'アーカイブページのアドレス'
例えば、ブログ記事のアーカイブページのアドレスが「http://www.foo.com/2012/07/bar.html」だとします。
この場合、以下のSQLを実行すると、そのブログ記事のIDを得ることができます。
SELECT fileinfo_entry_id FROM mt_fileinfo WHERE fileinfo_url = '/2012/07/bar.html'
ちなみに、mt_fileinfoテーブルでは、以下のような情報も得ることができます。
フィールド | 内容 |
---|---|
fileinfo_category_id | カテゴリ系アーカイブページでのカテゴリのID |
fileinfo_author_id | ユーザー系アーカイブページでのユーザーのID |
fileinfo_startdate | 日付系アーカイブページでのアーカイブ開始日の日付 |
fileinfo_blog_id | アーカイブページが属するブログのID |
fileinfo_archive_type | ページのアーカイブタイプ |
fileinfo_template_id | ページの元になっているテンプレートのID |
fileinfo_templatemap_id | アーカイブページのアーカイブマッピングのID |