「 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文の書き方が多少異なります。

応援よろしくお願いします。
いいね ! してもらえると嬉しいです。

Twitter で

自己紹介

松田 大 と申しますm(_ _)m

インディーズでミュージシャンをやっていたのですがいつのまにか...

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

一昨年の3月に結婚し、尻敷かれ男子の仲間入りを果たしました(笑)

現在勤めているJTクラウドシステムでは、「 Excel VBA 」を活用した効率化ツールの開発、「 WordPress 」を活用したWEBサイト、業務用WEBアプリケーション開発を中心に「 ネットワーク・サーバー構築 」や「 Office365製品の導入支援 」、最近は、ホームページ制作に加え、記事の執筆代行や掲載に必要な情報のリサーチ、テロップ入れや映像の切りはりなどの簡単な動画編集なども、まとめて行なっています。

お問い合わせはJTクラウドシステムホームページからお願いします。
スポンサーリンク