HOME>WEBプログラム覚書>[WordPress]ハマりポイントget_user_meta()

[WordPress]ハマりポイントget_user_meta()

3.2.1、マルチサイトONでの結果。

ローカル環境で動いて本番環境で動かない。ローカル環境と本番環境で$table_prefixが異なる場合など get_user_meta()使ってないか確認してみる。

get_user_meta

  1. <?php
  2. get_user_meta($user_id, $key, $single);
  3. ?>
$key
(string) (required) The metakey value to be returned.
'metakey' The meta_key in the wp_usermeta table for the meta_value to be returned.

get_user_meta()

$keyにwp_usermeta tableのmeta_keyを指定するとmeta_valueが返ってくるんだけど、wp_がついてるものは要注意。 このwp_が実は$table_prefixだったりする。

なので

PHP

  1. <?php
  2. // ダメなパターン
  3. $role = get_user_meta($user_id, 'wp_capabilities');
  4.  
  5. //
  6. $role = get_user_meta($user_id, $table_prefix . 'capabilities');
  7. ?>

な感じにしておかないと$table_prefixが変わると動かないことになる。 ($table_prefixを関数内で利用する場合は、global宣言をしましょう。)

まぁ標準だとwp_usermeta tableのmeta_keyにはwp_capabilities以外にはwp_user_levelくらいしか無さそうだけど。

それにしてもこの2つのmeta_keyに$table_prefixを付けなきゃならないのか理由がよくわからない。 そもそもなんで$table_prefixがテーブルの接頭辞以外の用途に使われてるのかもわからない。

なんか歴史的な経緯があるんだろうか・・・?

参照ページ
投稿日 2011年10月 5日 03:40
カテゴリ PHP
タグ WordPress | 関数
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1240

コメント

コメントする
Name
Email Address
URL