「 functions.php 」から プラグイン や 自作テーブル にアクセスする方法

,

プラグインのデータベーステーブルにアクセスしたり、自作したテーブルにアクセスする場合、「wpdb」で処理したいところですが、そのままでは使えません。ですが、子テーマのようにデータベース情報を書き換えるファイルを作れば簡単にアクセス出来るようになります。作業内容をメモがてら参考までにまとめて行きます。今回はサンプルとして「Welcart」のテーブルにアクセスして、ダッシュボードにクエリの結果を表示します。


この本を片手に簡単にECサイトが構築できました。
WordPress」+「Welcart」はこれからECサイトを始める方にお勧めです!!
小さなECサイトのWordPress+Welcart導入・設定ガイド[Welcart公式ガイド] (Small Business Support)

データベース情報の場所

前準備として、データベース情報の場所を確認します。ファイルは「wp-includes」フォルダの中の「wp-db.php」に記述されています。

wpdb

ここに記述されているテーブルが「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」フォルダの直下です。

「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);
}
?>

「プラグイン」の「ドロップイン」という項目に先ほどのファイルが表示されます。

dropins

ダッシュボードに取得したデータを表示するサンプル

実際にデータベースにアクセスして、取得した情報をダッシュボードに表示してみます。尚、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' );

結果はこんなイメージです。

uriage

結構簡単な手順でSQL文を「functions.php」などで扱えるようになります。

尚、以前「よく忘れる?SQL文の基本的な書き方!」という記事を書きましたが、こちらはどちらかと言うと「Microsoft SQL Server」よりの書き方です。「WordPress」の場合、「MySQL」が多いと思いますがSQL文の書き方が多少異なります。

自己紹介

松田 大と申しますm(_ _)m
インディーズでミュージシャンをやっていたのですがいつのまにか…

とある企業でショップのアルバイトスタッフから正社員、支店長を経てシステム部門に異動するという、開発担当としては変わった経緯を持っている方だと思います。

「Excel VBA」からスタートして、Yamaha RTX シリーズで VPN環境構築、Hyper-V環境構築、Windowsアプリ開発などを経験した後、「 WordPress 」に出会い、どっぷりハマっています。

現在勤めているETBS合同会社では、「 WordPress 」を活用したWEBサイト、業務用WEBアプリケーション開発を中心に、記事の執筆代行や掲載に必要な情報のリサーチ、映像のテロップ入れや切りはりなどの簡単な動画編集なども、まとめて行なっています。

現在、代表兼二児のパパ。子育てを通じて、こどもたちにもプログラミングの楽しさに触れてほしいと思うようになり、「 こどもICTかつしか教室 」を開講中。最近は童心に帰り、簡単なゲーム制作なんかも楽しんでいます(^_^)。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ビジュアルプログラミング オンライン無料体験レッスン モニター大募集
こどもICTかつしか教室 | 幼稚園年長 小学生 中学生 スクラッチ ビジュアルプログラミング
WordPress で困ったら? | 必要なときに必要な分だけ、お助けサポート
WordPress / PHP なんでも相談OK