ファイルをアップロードする前にプラグインフォルダをzip形式でダウンロード【WordPress】

備忘録
この記事で紹介しているコードは、下記の3つの関数を利用しています。
WordPressget_option()
options データベーステーブルから名前を指定してオプションの値を取得する安全な方法です。希望するオプションが存在しない場合、または対応する値がない場合は、FALSE が返されます。
リファレンスノート(1/3)
WordPresspost_custom()
引数に指定したカスタムフィールドの名前を元に対応したカスタムフィールドの値を取得します。
リファレンスノート(2/3)
PHPempty()
変数が空(空文字 0 NULL FALSE 空の配列)だったら「TRUE」 それ以外は「FALSE」を返します。
リファレンスノート(3/3)

この記事では、WordPressのプラグインファイルをアップロードによって更新する前に、プラグインフォルダをzip形式でダウンロードする方法を解説しています。

zipダウンロードをコードで解説

「不動産プラグイン」と「Simple Membership」をカスタマイズするプラグインのコードです。

<?php
//テーマがcocoonを使用している時にカスタマイズ
if (get_option('template') === 'cocoon-master'):
?>
<?php
/*不動産プラグインをカスタマイズボタンをクリックすると
*変数に代入し不動産プラグインをカスタマイズする
*処理を実行します。
*/
if( !empty($_POST['f_update']) ) {
$bukken_flag = 1;
}
/*Simple Membershipプラグインをカスタマイズボタンをクリックすると
*変数に代入しSimple Membershipプラグインをカスタマイズする
*処理を実行します。
*/
if( !empty($_POST['s_update']) ) {
$bukken_flag = 2;
}
//jisaku_updateプラグインのディレクトリパス
$path = WP_PLUGIN_DIR.'/jisaku_update';
//不動産プラグインのディレクトリパス
$fudo_path = WP_PLUGIN_DIR.'/fudou';
//Simple Membershipのディレクトリパス
$simple_path = WP_PLUGIN_DIR.'/simple-membership';
//アップロードするファイル名を配列変数に格納
$fudou_themes = ['ajax-loader.gif','archive-fudo.php','archive-fudo-loop.php','bookmark-fudo.php','top-fudo.php','corners2012.css','loan.php','pannellum.css','pannellum.js','single-fudo.php','slick.css','slick.min.js','slick-theme.css','spotlight.bundle.js','style2012.css'];
$fudou_themes_fonts = ['slick.eot','slick.svg','slick.ttf','slick.woff'];
$fudou_admin = ['fudo-functions.php','meta.php'];
//不動産プラグインのプラグイン情報を取得
$plugin_data = get_plugin_data($fudo_path.'/fudou.php');
$fudo_ver = '6.0.0';
?>
//不動産プラグインのバージョンが6.0.0でなければ表示する内容
<?php if($plugin_data['Version'] != $fudo_ver):?>
<p>不動産プラグインのバージョンが異なります。</p>
<p>不動産プラグインV<?php echo $fudo_ver;?>をインストールしてから、下記を実行してください。</p>
<?php endif; ?>
<div style="border:solid 1px; max-width:500px; padding:10px;">
//不動産プラグインのフォルダがなければ表示する内容
<?php
if (!file_exists($fudo_path)) {
echo '不動産プラグインがインストールされていません。';
}
?>
<p>不動産プラグインカスタマイズボタンをクリックしていただくと、バックアップとして既存の不動産プラグインのディレクトリをzipファイルでダウンロードしてから、下記のディレクトリにファイルをアップロードします。既存のファイルは上書きされます。</p>
ディレクトリ:wp-content/plugins/fudou/themes
<ol>
<?php
foreach ($fudou_themes as $file){
echo '<li>'.$file.'</li>';
}
?>
</ol>
ディレクトリ:wp-content/plugins/fudou/admin
<ol>
<?php
foreach ($fudou_admin as $file){
echo '<li>'.$file.'</li>';
}
?>
</ol>
ディレクトリ:wp-content/plugins/fudou
<ol>
<li>fudou.php</li>
</ol>
ディレクトリ:wp-content/uploads
<ol>
<li>download.php</li>
</ol>
<form method="post">
<input type="submit" name="f_update" value="不動産プラグインカスタマイズ">
</form>
</div>
<div style="border:solid 1px; max-width:500px; padding:10px;">
//Simple Membershipのフォルダがなければ表示する内容
<?php
if (!file_exists($simple_path)) {
echo 'Simple Membershipがインストールされていません。';
}
?>
<p>Simple Membershipカスタマイズボタンをクリックしていただくと、バックアップとして既存のSimple Membershipのディレクトリをzipファイルでダウンロードしてから、Simple Membershipのディレクトリに下記のファイルをアップロードします。既存のファイルは上書きされます。</p>
ディレクトリ:wp-content/plugins/simple-membership/views
<ol>
<li>edit.php</li>
</ol>
<form method="post">
<input type="submit" name="s_update" value="Simple Membershipカスタマイズ">
</form>
</div>
//不動産プラグインをカスタマイズボタンをクリックすると処理する内容
<?php if( $bukken_flag === 1 ): ?>
<?php
// ダウロードするzipファイル名
$fileName = date("YmdHis").'_fudou.zip';
/*
 * zipコマンド
 * 
 * 1. ディレクトリ移動
 * 2. ファイル圧縮
 */ 
 $command =  'cd ' . WP_PLUGIN_DIR . ';' . 'zip -r '. $fileName . ' ./fudou/';
exec($command);  // コマンド実行
// zipファイルパス
$zipPath = WP_PLUGIN_DIR . '/' . $fileName;
// zip出力
header( "Content-Type: application/zip" );
header( "Content-Disposition: attachment; filename=" . basename( $zipPath ) );
header( "Content-Length: " . filesize( $zipPath ) );
ob_clean();
flush();
readfile( $zipPath );
// Zipファイル削除
unlink( $zipPath );
//
if (file_exists($fudo_path)) {
if (file_exists($fudo_path.'/themes/fonts')) {
foreach ($fudou_themes_fonts as $file){
  copy($path.'/'.$file,$fudo_path.'/themes/fonts/'.$file);
}
}else{
mkdir($fudo_path.'/themes/fonts');
foreach ($fudou_themes_fonts as $file){
  copy($path.'/'.$file,$fudo_path.'/themes/fonts/'.$file);
}
}
foreach ($fudou_themes as $file){
  copy($path.'/'.$file,$fudo_path.'/themes/'.$file);
}
foreach ($fudou_admin as $file){
  copy($path.'/'.$file,$fudo_path.'/admin/'.$file);
}
$db = file_get_contents($path.'/fudou.txt');
file_put_contents( $fudo_path."/fudou.php", $db);
$upload_dir = wp_upload_dir();
copy($path.'/dowload.php',$upload_dir['basedir'].'/dowload.php');
} else {
	echo '不動産プラグインが存在しません';
}
?>
<?php elseif( $bukken_flag === 2 ): ?>
<?php
$path = WP_PLUGIN_DIR.'/jisaku_update';
$simple_path = WP_PLUGIN_DIR.'/simple-membership';
// zipファイル名
$fileName = date("YmdHis").'_simple_membership.zip';
/*
 * zipコマンド
 * 
 * 1. ディレクトリ移動
 * 2. ファイル圧縮
 */ 
 $command =  'cd ' . WP_PLUGIN_DIR . ';' . 'zip -r '. $fileName . ' ./simple-membership/';
exec($command);  // コマンド実行
// zipファイルパス
$zipPath = WP_PLUGIN_DIR . '/' . $fileName;
// zip出力
header( "Content-Type: application/zip" );
header( "Content-Disposition: attachment; filename=" . basename( $zipPath ) );
header( "Content-Length: " . filesize( $zipPath ) );
ob_clean();
flush();
readfile( $zipPath );
// Zipファイル削除
unlink( $zipPath );
if (file_exists($simple_path)) {
  copy($path.'/edit.php',$simple_path.'/views/edit.php');	
} else {
	echo 'Simple Membershipが存在しません';
}
?>
<?php endif; ?>
<?php else:?>
<p>お使いのテーマがCocoonではありません。</p>
<p>このプラグインは、テーマがCocoonを使用している時に不動産プラグインのカスタマイズができます。</p>
<?php endif; ?>
Fudousan Plugin Ver.6.0.0
タイトルとURLをコピーしました