Welcartを用いたECサイトのオリジナルテーマ開発中にWelcart純正のテーマと当社オリジナルのテーマの挙動の違いなどを確認する際に管理画面内でテーマを切り替えることが煩わしく感じたためテーマ切り替え用のパラメーターを指定することでテーマを切り替えることが出来る簡易プラグインを作成いたしました。
切り替え対象のテーマの設定は変数にハードコードが必要ですしDB内の値を直接書き換えていますので複数人での作業や本番環境では使えませんが、用途にマッチすることがあれば御利用ください。
テーマ切り替えプラグインのソースコード
<?php
/**
Plugin Name: AG THEME SWITCH
Version: 0.1.1
*/
/* 切り替え対象テーマ設定 */
$theme_list['welcart_basic'] = [
'current_theme' => 'Welcart Basic',
'template' => 'welcart_basic',
'stylesheet' => 'welcart_basic',
];
$theme_list['twentytwenty'] = [
'current_theme' => 'Twenty Twenty',
'template' => 'twentytwenty',
'stylesheet' => 'twentytwenty',
];
define('AG_THEME_LIST', $theme_list);
/* テーマのスラッグ取得 */
$theme_slug = $_GET['theme_slug'];
/* 切り替え実行 */
if ( !is_admin() ) {
if ( $theme_slug ) {
if ( ag_theme_dir_exists($theme_slug) ) {
$select_theme = AG_THEME_LIST[$theme_slug];
//
update_option( 'current_theme', $select_theme['current_theme'] );
update_option( 'template', $select_theme['template'] );
update_option( 'stylesheet', $select_theme['stylesheet'] );
} else {
echo '指定テーマがインストールされていません';exit;
}
}
}
/**
* 指定テーマスラッグのディレクトリ有無を確認する
*/
function ag_theme_dir_exists($theme_slug)
{
$path = get_theme_file_path().'/../'.$theme_slug;
if ( file_exists($path) ) {
return true;
} else {
return false;
}
}
使い方
上記プラグインをインストールした上で ” theme_slug” というパラメーターに切り替え対象のテーマのスラッグを指定して切り替えます。
Welcart Basic に切り替え
Example Domain
Twenty Twenty に切り替え
Example Domain
データベース内の値の変化確認
WordPressの利用中テーマの情報は “wp_options” テーブルの [ “current_theme” / “template” / “stylesheet” ] の3つのオプションに格納されています。
以下のSQLを実行すると変更された内容のレコードが返ってきます。
SELECT * FROM `wp_options` WHERE `option_name` = 'current_theme';
SELECT * FROM `wp_options` WHERE `option_name` = 'template';
SELECT * FROM `wp_options` WHERE `option_name` = 'stylesheet';
動作環境情報
エックスサーバー(x10) PHP 7.3.14 MySQL 5.7 WordPress 5.3.2
コメント
テーマスラッグを指定しない場合にサイトが表示出来なくなる不具合を修正しました。