HOME>WEBプログラム覚書>[WordPress] ブログの情報を取得する方法とノーキャッシュ疑惑

[WordPress] ブログの情報を取得する方法とノーキャッシュ疑惑

ブログのget_bloginfo()で取れないデータが必要な場合に使うもの。

ブログIDを取得したい。

ブログのIDを取得したい場合、グローバル変数の $current_blog を使うか、get_blog_id_from_url()を利用する。

PHP

  1. <?php
  2. global $current_blog;
  3. $blog_id = $current_blog->blog_id;
  4. ?>

$current_blogはstdClassでプロパティは

PHP

  1. <?php
  2. 'blog_id' => string '2'
  3. 'site_id' => string '1'
  4. 'domain' => string 'www.kantenna.com'
  5. 'path' => string '/'
  6. 'registered' => string '2012-01-15 12:08:02'
  7. 'last_updated' => string '2012-01-23 18:06:25'
  8. 'public' => string '1'
  9. 'archived' => string '0'
  10. 'mature' => string '0'
  11. 'spam' => string '0'
  12. 'deleted' => string '0'
  13. 'lang_id' => string '0'
  14. ?>

となっている。マルチサイトをサブドメインベースで構築した場合の結果なのでディレクトリベースの場合とか多少変わってくるかも。 もう一つのget_blog_id_from_url()は引数にドメイン名とディレクトリパスをとれる。

PHP

  1. <?php
  2. $blog_id = get_blog_id_from_url(get_bloginfo('wpurl'));
  3. ?>

としたいところだがこれはfalseが返る。プロトコルはいらないらしい。

PHP

  1. <?php
  2. $blog_id = get_blog_id_from_url('http://www.kantenna.com'); // false
  3. $blog_id = get_blog_id_from_url('www.kantenna.com');        // int
  4. ?>

get_bloginfo('id')でとれるようにしてくれないんだろうか。 ちなみに、get_bloginfo()の引数、homeとsiteurlがいつの間にか、DEPRECATEDになっていた。

オプションを全て取得したい。

wp_load_alloptions()を使用します。 で、気になったのがWordPressマルチサイトのパフォーマンス問題 | qnote

マルチサイトの場合、get_option()がキャッシュを使わずデータベースアクセスしているとの指摘。 まじかよwwwでもWordPressならありえそうと思いつつ問題箇所を見てみる。

wp_load_alloptions()

  1. <?php
  2. if ( !defined( 'WP_INSTALLING' ) || !is_multisite() )
  3.     $alloptions = wp_cache_get( 'alloptions', 'options' );
  4. else
  5.     $alloptions = false;
  6. ?>

ぱっと見た感じキャッシュが使われない気がするのだが、僕の状況(3.3.1の日本語版、サブドメインベースのマルチサイト)ではdefined('WP_INSTALLING')が大抵の場合falseを返す。 じゃあWP_INSTALLINGってどこで定義されてんのかと見てみると、wp_activate.phpwp-admin/install.phpwp-admin/setup-config.phpwp-admin/upgrade.phpwp-includes/ms-funtions.phpのwpmu_create_blog()の中。

おそらくWP_INSTALLINGはインストール時とか特定の状況でしか定義されない定数ため、普通のコンテンツページなどはキャッシュが使われるているみたいです。

バージョンによってはWP_INSTALLINGがグローバルに定義されてたり 自分で定義しちゃってたり、僕の環境が特殊だったりするかもしれないので ちゃんとキャッシュ使われてるか確認した方がいいかもしれません。

投稿日 2012年1月28日 23:01
カテゴリ PHP
タグ WordPress | 関数
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1261

コメント

コメントする
Name
Email Address
URL