ページのアドレスからブログ記事等の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