LoginSignup
5
3

More than 5 years have passed since last update.

さくらのクラウドのKUSANAGIを利用したときにThemeSwitcherでテーマが読み込まれなかった件の対処

Last updated at Posted at 2016-02-02

はじめに

さくらのクラウドでKUSANAGIアーカイブを利用しています。
ポイっと使うだけでKUSANAGI早いので便利です。

が、その中で一点、うまく行かない点があったので手動で修正・対処した点のメモです。

2016年10月18日(火)追記
wp-cliを使う解決方法を載せました。

問題

KUSANAGIプラグインに「Theme Switcher」(デバイス切替)と呼ばれる、スマホなどによってテーマを切り替える機能があります。
案件によってはレスポンシブではなくテーマを切り替える必要があったりして、その時にすごく便利な機能です。

しかしながらこの機能を使おうとした際にテーマが認識されませんでした。

Screen Shot 2016-02-02 at 3.23.06 PM.png

上記のように「Theme Switcher」ではデフォルトのテーマしか見えていません。
WordPressの管理画面 > 外観からは追加したテーマがちゃんと見えていますので、テーマが壊れているということはなさそうです。

新対処

以前はソースコードを編集していましたが、構築する毎に編集するのは大変でしたのでwp-cliを利用しました。
KUSANAGIであればデフォルトでwp-cliが使えます。
WordPressがインストールされたディレクトリ( 例: /home/kusanagi/example.com/DocumentRoot )でwpコマンドを実行します。

$ wp transient delete avaiable_themes
Success: Transient deleted.

これでキャッシュをクリアすることが出来ました。簡単ですね!

対処

対処はソースコードを修正しました。

/home/kusanagi/example/DocumentRoot/wp-content/mu-plugins/kusanagi-core/modules/theme-switcher.php
   public function get_avaiable_themes() {
-                if ( false === ( $this->avaiable_themes = get_transient( 'avaiable_themes' ) ) ) {
+                if ( true || false === ( $this->avaiable_themes = get_transient( 'avaiable_themes' ) ) ) {
                        if ( function_exists( 'wp_get_themes' ) ) {
                                $this->avaiable_themes =  wp_get_themes();

if文の中に true || を突っ込みます。
これで出てきます。

一度設定できたら元に戻しても良いです。
または 1日待てば戻ります

原因

KUSANAGIではテーマ一覧を取得する際にget_transient()という一時的なキャッシュを利用しているようです。このキャッシュの期間が1日になっているため、初回の色々と設定しているときにテーマ一覧が反映されない!となるようです。
KUSANAGIは色々なインスタンス上で動くようになっていますので、他の環境では発現しないかもしれません。
KUSANAGIプラグインの元(?)の「SiteManager」では発生しない(らしい)です。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3