SWELLは人気テーマですが、見かけるサイトは同じような見た目ばかりです。
サイトを開いた瞬間、『お前SWELLだろ!(お前平田だろ!@藤波辰爾)』と思う人は多いです。
SWELLはカスタマイザーや設定ページで初心者ユーザーでも気軽に変更可能な豊富なオプションを用意しています。しかし、それ以上のカスタマイズを行おうとした時には、フックなどでカスタマイズしにくいテーマです。
SWELLユーザーもしくはこれからSWELLを購入を検討されている方で、SWELLはカスタマイズしやすいテーマだと思っているなら、それは考え直した方がよいです。
特にCocoonやSnowMonkeyユーザーでコードでカスタマイズしてきた人たちにとって、SWELLに乗り換えて、さぁカスタマイズしようと思った時に感じる壁、なんか違う感があります。
この記事ではSWELLをゴリゴリにカスタマイズしようと思っている人が、SWELLがカスタマイズしにくく感じるのはなぜなのか?まとめています。
WordPress標準関数のカスタマイズの流儀
WordPress標準関数は、最後のreturnの部分にapply_filters関数が仕込んであります。
そのfilterフックのおかげで、関数出力を自由に書き換えることができるようになっています。
WordPressのカスタマイズ性の高さは、filterフックがあるかないかで大きく変わります。

SWELLはWordpress標準関数を使っていない個所がある
WordPress標準関数は、filterフックが仕込まれているからこそ、カスタマイズ性が担保されています。
しかし、SWELLはSWELL独自関数でWordpress標準関数を置き換えている個所が散見され、関数出力が上書きできなものが多いです。
SWELLはWordpressテーマにもかかわらず、Wordpressのカスタマイズしやすい特徴を打ち消していて、カスタマイズしにくくなっています。
更に悪いことに、SWELL独自関数は子テーマで置き換えることもできません。
ユーザーからすると親テーマを直接いじる意外に方法がありません。
SWELL独自関数にfilterフックが用意されていれば、まだいいのですが、なぜかフックは無いのです。
実際に困った例として、『hookでSWELLのサムネイル画像を差し替えようと思った』時に変わるところと変わらないところが出てきてしまいました。

WordPressの標準関数を使っている箇所と使っていない箇所が混ざっているので、WordPress標準関数のフックを使っても効いたり効かなかったりという結果になります。
他にも、prev/nextリンクのタイトルもtitleのフックを通らないので、タイトル全体にフックを掛けたい場合にprev/nextのタイトルだけフックを通りません。
<?php
if ( ! defined( 'ABSPATH' ) ) exit;
$show_thumb = SWELL_Theme::get_setting( 'show_page_link_thumb' );
$is_same_term = 'post' === get_post_type() ? SWELL_Theme::get_setting( 'pn_link_is_same_term' ) : false;
$pn_style = '-style-' . SWELL_Theme::get_setting( 'page_link_style' );
$add_class = ( $show_thumb ) ? $pn_style . ' -thumb-on' : $pn_style;
// 前後のポスト
$prev_post = get_adjacent_post( $is_same_term, '', true );
$next_post = get_adjacent_post( $is_same_term, '', false );
?>
<ul class="p-pnLinks <?=esc_attr( $add_class )?>">
<?php if ( $prev_post ) : ?>
<li class="p-pnLinks__item -prev">
<?php
SWELL_Theme::pluggable_parts( 'pnlink', [
'type' => 'prev',
'id' => $prev_post->ID,
'title' => $prev_post->post_title,
'show_thumb' => $show_thumb,
] );
?>
</li>
<?php endif; ?>
<?php if ( $next_post ) : ?>
<li class="p-pnLinks__item -next">
<?php
SWELL_Theme::pluggable_parts( 'pnlink', [
'type' => 'next',
'id' => $next_post->ID,
'title' => $next_post->post_title,
'show_thumb' => $show_thumb,
] );
?>
</li>
<?php endif; ?>
</ul>
SWELLはテーマの中に他にもこういう箇所は多数あるんだろうと思います。ユーザーカスタマイズできる部分なので、必要ならユーザーが対応すればいいのですが、Wordpressの機能を打ち消すような作りになっている詰めの甘さがとても残念な感じがしてならないのです。
SWELL 子テーマで置き換えられるのは、get_part()
の部分だけ
SWELLのカスタマイズは子テーマで行うということになっていますが、子テーマで上書きできるのは、get_part()で呼び出されるテンプレートだけです。
それ以外の部分でユーザーが置き換えられるのは、pluggable_parts以下に定義された独自関数だけです。
SWELLの作者がpluggable_partsとして定義していない関数はユーザーはいじれません。

CocoonやSnow Monkeyではどのようにカスタマイズ性を担保しているか?
CocoonやSnowMonkeyはユーザーがいじる可能性がある部分はカスタマイズできる仕掛けがあり、カスタマイズのしやすいテーマといえます。
Cocoonの場合
Cocoonの場合は潔いです。
ほぼすべての関数を子テーマで上書きできるようになっています。また、変更が必要そうな部分にはフックが必ずあります。
フォーラムで、ユーザーが要望をすれば、簡単な修正で対応できるものは、作者が気軽に追加してくれるケースも多いです。
Snow Monkeyの場合
SnowMonkeyは、Wordpress標準関数をSWELLのように変な独自関数に置き換えるということしていません。
SnowMonkeyは車輪の発明はしないというスタンスです。
また、テンプレート出力を上書きできる仕組みもあり、カスタマイズの自由度は最大級になっています。
SWELLフォーラムの重苦しい空気
SWELLは有料テーマにも関わらず、フォーラムに自由な雰囲気があまりなく、気軽に要求を出しにくいです。
フォーラムに常時張り付いている人たちは、何らかの思惑があって無料でサポートしている人たちばかりで、簡単に言えば、自分や自分のサイトの宣伝目的が強い人たちです。
そのような人たちは、有料テーマのフォーラムであるという意識は低いので、どうしても殺伐とした空気があります。
テーマ作者が忙しいのは分かりますが、あの空気感は初心者はきついでしょう。
この辺は、無料テーマや無料プラグインなどで、ユーザーの要望に対応してきたCocoonやSnowMonkeyの作者とSWELLの作者の経験の違いかなと思います。
SWELLはユーザーによるカスタマイズの要望を真摯に受け止める窓口が機能していないため、カスタマイズ性は相当劣っています。
テーマ作者以外にSWELL運営としてフォーラムのサポートをする人員を増やす方がいいと思います。
Lightningで有名なVektorのフォーラムも最初は殺伐としていましたが、最近ではかなりユーザーフレンドリーになってきた感じがします。
まとめ
SWELLは、ユーザーによるカスタマイズ性が低いため、金太郎あめのようにどのサイトも同じような見た目、機能になってしまう欠点があります。
SANGOやJINが流行ったときも、どのサイトを見ても同じ見た目で、お腹いっぱいになってしまった時期がありましたが、SWELLの賞味期限が近づいているのかもしれません。
コメント