時間のない人のために結論先出し。
結論:$wpdbを使えば、SQLでWordPressに保存したデータを操作できる。
業務でBooking Packageというプラグインを使って入力した内容を取得する必要が出てきたので、キャッチアップした内容を備忘録としてまとめておきます。
Booking Packageの管理画面は以下のようになっています。サービスというところに入力した情報を取得します。ここでは「ホンダ」と「CB1100」という名前を取得します。
① まず、DBのテーブルを見にいきます。DBの情報がわからないとデータを取得できないからです。Localの場合で説明します。
Localの画面でDatabaseのタブに切り替え、Open AdminierEvoをクリックします。
すると、DBの管理画面らしきものが開きます。ここではwp-booking_package_servicesというテーブルの中に、取得したい情報が入っていました。
② 次に、functions.phpにwpdbを使った関数を書きます。
function get_service_names()
{
global $wpdb;
$query = "SELECT name FROM wp_booking_package_services";
$results = $wpdb->get_results($query);
return $results;
}
③ 最後に、呼びたいページのphpで、先ほど作った関数を呼べば完了です。
<?php
$services = get_service_names();
if (!empty($services)) : ?>
<ul>
<?php foreach ($services as $service) : ?>
<li><?= esc_html($service->name) ?></li>
<?php endforeach; ?>
</ul>
<?php else : ?>
<p>No active services found.</p>
<?php endif; ?>
サービスAという余計な情報も取得してしまいましたが、その辺りはSQLで調整すればOKです。(Booking Packageの別のカレンダーのサービスの情報が紛れてしまったようです。)
この記事では、WordPressのBooking Packageというプラグインで入力した内容をwpdbで取得する方法を説明しました。他のプラグインでも大体同じ仕組みだと思うので、ぜひwpdbを活用してみてください。
wpdbを使用する際には、SQLインジェクション攻撃を防ぐために、prepare() メソッドを使うべきかどうかを考えて使用しましょう。