search
LoginSignup
3

More than 5 years have passed since last update.

posted at

updated at

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

はじめに

さくらのクラウドで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」では発生しない(らしい)です。

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
What you can do with signing up
3