
プラグインのデータベーステーブルにアクセスしたり、自作したテーブルにアクセスする場合、「wpdb」で処理したいところですが、そのままでは使えません。ですが、子テーマのようにデータベース情報を書き換えるファイルを作れば簡単にアクセス出来るようになります。作業内容をメモがてら参考までにまとめて行きます。今回はサンプルとして「Welcart」のテーブルにアクセスして、ダッシュボードにクエリの結果を表示します。
「WordPress」+「Welcart」はこれからECサイトを始める方にお勧めです!!
小さなECサイトのWordPress+Welcart導入・設定ガイド[Welcart公式ガイド] (Small Business Support)
データベース情報の場所
前準備として、データベース情報の場所を確認します。ファイルは「wp-includes」フォルダの中の「wp-db.php」に記述されています。
ここに記述されているテーブルが「wpdb」でアクセス可能なテーブルです。テーブル名は接頭辞を除いて記述します。
var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta', 'terms', 'term_taxonomy', 'term_relationships', 'termmeta', 'commentmeta' );
「wp-db.php」を直接編集しても同じようにテーブルにアクセス出来ます。ただ、アップデートなどで書き変わったりする可能性があるので、書き換え用のファイルを作成します。
「db.php」ファイルの作成と配置
「db.php」という名前のファイルを作成し、FTPなどでアップロードします。作成する場所は「wp-content」フォルダの直下です。
記述する内容はこんな感じです。aaa、bbb、ccc、の部分がテールブ名です。
<?php require_once( ABSPATH . WPINC . '/wp-db.php' ); class my_wpdb extends wpdb { var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta', 'terms', 'term_taxonomy', 'term_relationships', 'termmeta', 'commentmeta', 'aaa', 'bbb', 'ccc' ); } if ( ! isset($wpdb) ) { $wpdb = new my_wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST); } ?>
「プラグイン」の「ドロップイン」という項目に先ほどのファイルが表示されます。
ダッシュボードに取得したデータを表示するサンプル
実際にデータベースにアクセスして、取得した情報をダッシュボードに表示してみます。尚、SQLインジェクションの危険があるため、注意が必要です。(詳しくはこちら)
先ほどのaaaの部分に「Welcart」のテーブル「usces_order」を入れています。で、「functions.php」の方はこんな感じで追記します。
function chk_uriage(){ global $wpdb; // 先月の初日 $value1 = date("Y-m-1", strtotime(date("Y-m-1") . "-1 month")); // 今月の初日 $value2 = date("Y-m-1"); $value3 = 'completion%'; $chkdb = $wpdb->get_row( $wpdb->prepare( "SELECT Count(ID) AS count_total, Sum(order_item_total_price) AS price_total FROM $wpdb->usces_order WHERE order_date >= %s AND order_date < %s AND order_status LIKE %s ", $value1, $value2, $value3 ) ); list($val1,$val2) = array($chkdb->count_total,$chkdb->price_total); $response = '先月売り上げは以下のとおりです。<br />[件数]'.$val1.'件/[売り上げ]'.number_format($val2).'円'; return $response; } // ダッシュボードに追加 function uriage_dashboard_widget_function() { echo chk_uriage(); echo '<hr>'; echo '今月も頑張りましょう(^ ^)'; } function uriage_add_dashboard_widgets() { wp_add_dashboard_widget('uriage_dashboard_widget', '先月の売り上げ合計', 'uriage_dashboard_widget_function'); } add_action('wp_dashboard_setup', 'uriage_add_dashboard_widgets' );
結果はこんなイメージです。
結構簡単な手順でSQL文を「functions.php」などで扱えるようになります。
尚、以前「よく忘れる?SQL文の基本的な書き方!」という記事を書きましたが、こちらはどちらかと言うと「Microsoft SQL Server」よりの書き方です。「WordPress」の場合、「MySQL」が多いと思いますがSQL文の書き方が多少異なります。
自己紹介
インディーズでミュージシャンをやっていたのですがいつのまにか…
とある企業でショップのアルバイトスタッフから正社員、支店長を経てシステム部門に異動するという、開発担当としては変わった経緯を持っている方だと思います。
「Excel VBA」からスタートして、Yamaha RTX シリーズで VPN環境構築、Hyper-V環境構築、Windowsアプリ開発などを経験した後、「 WordPress 」に出会い、どっぷりハマっています。
現在勤めているETBS合同会社では、「 WordPress 」を活用したWEBサイト、業務用WEBアプリケーション開発を中心に、記事の執筆代行や掲載に必要な情報のリサーチ、映像のテロップ入れや切りはりなどの簡単な動画編集なども、まとめて行なっています。
現在、代表兼二児のパパ。子育てを通じて、こどもたちにもプログラミングの楽しさに触れてほしいと思うようになり、「 こどもICTかつしか教室 」を開講中。最近は童心に帰り、簡単なゲーム制作なんかも楽しんでいます(^_^)。
コメントを残す