WordPressのプラグイン更新にともなうルーチンワークを1Click化する
2023-12-30 記載
概要 : WordPressのプラグイン更新にともなうルーチンワークを1Click化する
Keyword : WordPress, 更新,
WordPressは更新すると、書き加えていた変更はリセットされてしまいます。なるべくそうならないように、更新で置き換わるファイル自体は変更せずに、外野から操作するのがコツですが、そうもいかないケースもあります。
そこで使いやすい phpのftpを用いて、ファイルを決まった手順で書き換えるphp処理を作成しました。はやい話「更新バッチ」ですね。
//基本設定
mb_language('Japanese');
mb_internal_encoding('UTF-8');
date_default_timezone_set("Asia/Tokyo");
setlocale(LC_ALL, 'ja_JP.UTF-8');
$sPlugin = $_GET['plugin'] ?? 'nop';
$sServer = $_GET['server'] ?? 'localhost';
$cParam = array();
if ($sPlugin === 'nop') {
} elseif ($sPlugin === 'wpplugin') {
//================================================================================
// プラグインを更新した後、管理画面に広告を出させないように修正する
//================================================================================
$cParam['local_temp_folder'] = 'c:/home/cfsid/cfsid.cloudfree.jp/public_html/temp/';
//$ftp 生成
if ($sServer === 'localhost') {
//ftp-local
$ftp = getftp('localhost/ftpuser/password');
ftp_chdir($ftp, '/cloudfree_home/cfsid/cfsid.cloudfree.jp/public_html/mywprdpress/wp-content/plugins/wpplugin/includes/admin/');
}
if ($sServer === 'cloudfree') {
//ftp-cloudfree
$ftp = getftp('svXX.cloudfree.ne.jp/cfsid_ftpuser@cfsid.cloudfree.jp/password');
ftp_chdir($ftp, '/cfsid.cloudfree.jp/public_html/mywprdpress/wp-content/plugins/wpplugin/includes/admin/');
}
//[作業内容]
//class-admin.php の wpplugin()->add_notice で始まる行を//でコメントアウトする
//step1:ftpでdownload > step2:ファイル編集 > step3:Upload
//step1:ftpでdownload
$sLocalFile = $cParam['local_temp_folder'].'class-admin.php';
ftp_get($ftp, $sLocalFile, 'class-admin.php', FTP_BINARY);
//step2:ファイル編集
$sContent = file_get_contents($sLocalFile);
$sContent = str_replace('wpplugin()->add_notice', '//wpplugin()->add_notice', $sContent);
file_put_contents($sLocalFile, $sContent);
//step3:Upload
ftp_put($ftp, 'class-admin.php', $sLocalFile, FTP_BINARY);
sleep(1); //一呼吸おいて
unlink($sLocalFile);
//$ftp 後始末
ftp_close($ftp);
echo '処理完了';
}
// === function ================================================================
//FTPサーバへの接続
function getftp($sServerVal) {
$asServerVal = explode('/', $sServerVal);
$ftp = ftp_connect($asServerVal[0]) or die("Couldn't connect to $asServerVal[0]");
ftp_login($ftp, $asServerVal[1], $asServerVal[2]) or die("Couldn't login");
return $ftp;
}