ワードプレスの関数を使う


スポンサーリンク

ワードプレスのプラグインを作っていたら、どうしても外部プログラムを呼び出さないといけない状況になりました。

つまり、

	jQuery(function($) {
		$.ajax({
			url: '<?php echo site_url(); ?>/wp-content/plugins/開発中のプラグイン/開発中のプラグインから呼び出す外部プログラム'+'?uppath='+uppath,
			type: 'POST',
			data: fd,
			processData: false,
			contentType: false,
			success: function(data) {
			
			alert('return data='+data);

			},
			error: function(data,dmy,err) {
				alert("ERROR:"+err);
			}
		});
	});

ワードプレスのプラグインなので、やっぱりワードプレスのデータベースにあたりにいかないといけない場面が出てくるわけです。

よけて、よけて、よけていたのですけど、ここにきてダメ。

でも、案外簡単なんですわ。


外部プログラムはこんな感じなのね?
<?php
	/************** APPEND YUZUMARU *************************
		yuzu_imageup を 自分のファンクション名に replace
		ex yuzu_imageup_ -> my_func_ 
	/********************************************************/

	$uppath = '';
	if( isset($_GET['uppath']) ) {
		$uppath = $_GET['uppath'];
	}
	if( isset($_GET['unzips']) ) {
		$unzips = $_GET['unzips'];
	}
	if( isset($_GET['rttype']) ) {
		$rttype = $_GET['rttype'];
	}
	if( isset($_GET['upurl']) ) {
		$upurl = $_GET['upurl'];
	}
	if( isset($_GET['resize']) ){
		$resize = $_GET['resize'];
	}
	$snap = 0;
	if($snap == 1 ){
		$fp = fopen("snap.txt","w");
		fwrite($fp,"unzips:".$unzips."\n");
		fwrite($fp,"uppath:".$uppath."\n");
		fwrite($fp,"uploadlist:".$uploadlist."\n");
		fclose($fp);
	}
	$uploadlist = '';
	$count = count($_FILES['files']['tmp_name']);
	for($i = 0 ; $i < $count ; $i ++ )
	{
		:
		:
		:

こう書く。

<?php
	/************** APPEND YUZUMARU *************************
		yuzu_imageup を 自分のファンクション名に replace
		ex yuzu_imageup_ -> my_func_ 
	*********************************************************/
	require_once( '../../../wp-load.php' ); ← ここね。
	/********************************************************/

	$uppath = '';
	if( isset($_GET['uppath']) ) {
		$uppath = $_GET['uppath'];
	}
	if( isset($_GET['unzips']) ) {
		$unzips = $_GET['unzips'];
	}
	if( isset($_GET['rttype']) ) {
		$rttype = $_GET['rttype'];
	}
	if( isset($_GET['upurl']) ) {
		$upurl = $_GET['upurl'];
	}
	if( isset($_GET['resize']) ){
		$resize = $_GET['resize'];
	}
	$snap = 0;
	if($snap == 1 ){
		$fp = fopen("snap.txt","w");
		fwrite($fp,"unzips:".$unzips."\n");
		fwrite($fp,"uppath:".$uppath."\n");
		fwrite($fp,"uploadlist:".$uploadlist."\n");
		fclose($fp);
	}
	$uploadlist = '';
	$count = count($_FILES['files']['tmp_name']);
	for($i = 0 ; $i < $count ; $i ++ )
	{
		:
		:
		:

これで、ワードプレスのほとんどの関数を呼び出せるようになる。

wp-load.php の働き


wp-load.phpは、wp-config.php、functions.php、version.php、load.phpなどを読み込んでくれます。

そのため、ワードプレスのデータベース関連やパス関連のデータも使うことができるようになります。


まとめ


便利になりますね。
require_once( '../../../wp-load.php' ); 
これだけです。

もちろん、パスは、wp-load.php のある場所を指定すればいいので、

プラグインのパスから呼ぶのは ../../../ ですけど、

どこの外部プログラムを使うかによってこのパスを変えてくださいね。


このほかに、
<?php
define('WP_USE_THEMES', false);
require('../../../wp-blog-header.php');
?>
こちらの方法でも可能です。


いままでいろんなプラグインを書いてきたけど、JavaScript が絡むとどうしても外部プログラムに飛ばしておしまい。

それが、wp-load.php を読み込むだけでワードプレスの環境をつかえるようになるとは。

もう怖いものなしですね。


スポンサーリンク