Simple Colors にも WordPress.com Stats を導入して、アクセス解析と共に短縮URLの wp.me が利用できるようになったのでどのようなものか検証してみました。
WordPress.com Statsを使わない場合の、短縮URLは、パーマリンクを使わない場合のURLになります。
これだと、パーマリンクを使ってる場合、DBへのクエリー後、表示するテンプレート分岐の直前となる template_redirect というフックでパーマリンク本来のURLへのリダイレクトが発生し、応答速度、サーバ負荷の両面でマイナスとなります。また。パラメータ付きのURLは、やはりかっこいいものではありませんよね。
はたして、wp.meの短縮URLがこの問題を回避できているのでしょうか。この記事の短縮URL( http://wp.me/p1iNN9-48 )を View HTTP Request and Response Header で見てみると
残念なことに、リダイレクト先は、WordPressのデフォルトURL。。。
つまり、wp.meで1回。WordPress内で1回の計2回のリダイレクトになってしまい、余計に応答速度が遅くなってしまうということです。
期待は、あっさり裏切られてしまった形になりますが、一応、wp.meの短縮URLの仕組みがどのようなものか、ソースから解析してみます。
下記は、WordPress.com Statsで短縮URLを生成している部分のソースコードです。
function wpme_get_shortlink( $id = 0, $context = 'post', $allow_slugs = true ) { global $wp_query; $blog_id = stats_get_option('blog_id'); if ( 'query' == $context ) { if ( is_singular() ) { $id = $wp_query->get_queried_object_id(); $context = 'post'; } elseif ( is_front_page() ) { $context = 'blog'; } else { return ''; } } if ( 'blog' == $context ) { if ( empty($id) ) $id = $blog_id; return 'http://wp.me/' . wpme_dec2sixtwo($id); } $post = get_post($id); if ( empty($post) ) return ''; $post_id = $post->ID; $type = ''; if ( $allow_slugs && 'publish' == $post->post_status && 'post' == $post->post_type && strlen($post->post_name) <= 8 && false === strpos($post->post_name, '%') && false === strpos($post->post_name, '-') ) { $id = $post->post_name; $type = 's'; } else { $id = wpme_dec2sixtwo($post_id); if ( 'page' == $post->post_type ) $type = 'P'; elseif ( 'post' == $post->post_type ) $type = 'p'; elseif ( 'attachment' == $post->post_type ) $type = 'a'; } if ( empty($type) ) return ''; return 'http://wp.me/' . $type . wpme_dec2sixtwo($blog_id) . '-' . $id; }
上記から分かることは、wp.meの短縮URLは、
- APIなどを通して取得するわけではなく、WordPress内部のデータを使って生成しうる簡単なもの
- その内容は、WordPress.com Statsへの登録IDおよび、投稿・ページ・メディアのIDを数字+アルファベットの62文字で構成される文字列に変換して生成し、一定パターンで連結したもの
- 一定のパターンとしては、下記4パターンが存在
ブログ・・・ブログidの短縮形
投稿・・・接頭辞sまたはp + ブログidの短縮形 + 記事idの短縮形
ページ・・・接頭辞P + ブログidの短縮形 + 記事idの短縮形
メディア・・・接頭辞a + ブログidの短縮形 + メディアidの短縮形 - カテゴリーをはじめとしたタクソノミーや年月アーカイブ、カスタム投稿タイプには対応していない
- WordPress以外への対応も不可能。
簡単に言うと、wp.meはリクエストされた短縮URLに対し、文字列変換を行い、リダイレクトするという簡単な仕組みとなっています。
色々と便利な短縮URLですが、SEOやサーバ負荷、そして何よりユーザーのため、用法を守って使うべきでしょう。
- 恒常的なリンクでの使用は避ける
- 文字制限や入力デバイスの制限により、文字数を少なくすることが都合良い場合に使用
- WordPressのパーマリンク設定を事後的に変更する可能性がある場合