回答:
以下を考慮してください。
プラグインは、サイトごとに異なるテーブルプレフィックスを使用するワードプレスネットワークで使用されます。プラグインは、同じデータベース内の836の異なるサイトで同時に実行できます。wp_385677_liveshoutbox
完全に合理的なテーブル名です。
プラグインは、セキュリティの概念を持っているユーザーによってインストールさselect * from wp_users
れ、システムに注入しようとするボットをブロックするためにテーブルプレフィックスを変更しました。新しい脆弱性が見つかっても機能しません。
テーブル名をハードコーディングするなどのショートカットを取ることは、製品を起動して実行するための良い方法ですが、リリースするための良い方法ではありません。非常に短い時間でプラグインに「機能しない」コメントが山積みになります。最悪の場合、他の人のサイトを破壊します。
複雑なクエリがあり、作成の苦痛に対処したくない'select foo from ' . $wpdb->prefix . '_mytable left join ' . $wpdb->prefix . '_mytablemeta on ' . $wpdb->prefix . '.ID = ' . $wpdb->prefix . '.meta_id ....
場合は、置換を使用できます。例えば:
$query = 'select foo from %table% left join %meta% on %table%.ID = %meta%.meta_id ... ';
$change = array (
'%table%' => $wpdb->prefix . '_mytable',
'%meta%' => $wpdb->prefix . '_mytablemeta'
);
$sql = str_replace( array_keys( $change ), array_values( $change ), $query );
$results = $wpdb->get_results( $sql );
Wordpressは常に変化しています。今日「機能する」ものは明日機能しない可能性があります。それがAPI関数がある理由です。Wordpress開発者は、パブリックAPIの動作が一貫していることを確認します(または、機能を減価します)。内部メソッド呼び出しを使用し始めると、それが「より高速」であるため、通常は戻ります。ソフトウェアには真のショートカットはほとんどありません-それらは必要な作業を今から後に移動するだけで、クレジットカードのように「後で」は通常より多くの費用がかかります。
$wpdb->prefix . "users"
は、マルチサイトのインストールで使用すると無効なテーブルになるということです。これは、テーブルにdbプレフィックスが付加されるためです。ただし、すべてのユーザーはネットワークユーザーであるため、マルチサイトは1つのユーザーテーブルのみを使用します。そのため、クエリにwp_usersテーブルまたはwp_usermetaテーブルが含まれる場合は、$wpdb->users
またはを$wpdb->usermeta
それぞれ使用する必要があります。