はじめに
さくらのクラウドでKUSANAGIアーカイブを利用しています。
ポイっと使うだけでKUSANAGI早いので便利です。
が、その中で一点、うまく行かない点があったので手動で修正・対処した点のメモです。
2016年10月18日(火)追記
wp-cliを使う解決方法を載せました。
問題
KUSANAGIプラグインに「Theme Switcher」(デバイス切替)と呼ばれる、スマホなどによってテーマを切り替える機能があります。
案件によってはレスポンシブではなくテーマを切り替える必要があったりして、その時にすごく便利な機能です。
しかしながらこの機能を使おうとした際にテーマが認識されませんでした。
上記のように「Theme Switcher」ではデフォルトのテーマしか見えていません。
WordPressの管理画面 > 外観からは追加したテーマがちゃんと見えていますので、テーマが壊れているということはなさそうです。
新対処
以前はソースコードを編集していましたが、構築する毎に編集するのは大変でしたのでwp-cliを利用しました。
KUSANAGIであればデフォルトでwp-cliが使えます。
WordPressがインストールされたディレクトリ( 例: /home/kusanagi/example.com/DocumentRoot )でwp
コマンドを実行します。
$ wp transient delete avaiable_themes
Success: Transient deleted.
これでキャッシュをクリアすることが出来ました。簡単ですね!
対処
対処はソースコードを修正しました。
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」では発生しない(らしい)です。