この記事は「Vektor WordPress Solutions Advent Calendar 2023」の12月15日の記事になります。
2023年もあっという間にあと2週間となりました。
こんばんは、フリーランス&制作会社ディレクターの川井昌彦です。
今年もベクトルさんのテーマ・プラグインにはお世話になりました。
昨日のアドベントカレンダーでIKUKO Laboのかなだいくこさんが「Lightningでネットショップを作ろう | IKUKO Labo」 という記事で Lightning + WooCommerce でのECサイト制作について書かれていましたが、私も Lightning + WooCommerce で2件ほどECサイトを制作いたしました。
普通のネットショップサービスでは相当カスタマイズしないと厳しいと思われる要件のサイトが、ほとんどコードを書かずに実現できてマジで凄いなと思いましたので、機会があったら記事にしてみたいです。
目次
受託ウェブ制作案件で最近気をつけていること
私はウェブ制作を仕事にしておりますが、最近は「なるべくコードを書かない」ことを考えながら制作をしています。
『はぁ? ウェブ制作会社がコードを書かないようにしているってどういうこと?』
と思われますよね。
実は私、先日行われた「WordCamp Tokyo 2023」の「環境変化の激しいWordPressのメンテナンスをどう考えるか」というセッションのパネルディスカッションに登壇させていただきました。
その中で、『ここ数年のWordPressの変化は本当に激しくて、「制作会社だからオリジナルテーマで作る」とか「プラグインを使わずに自作コードでカスタマイズする」とかいう時代ではなくなってきている』と発言したのです。
とはいえ、既存のテーマやプラグインの仕様では案件の仕様に合わない ということは必ずあります。
そんなとき、みなさんはどうされているでしょうか?
- テーマやプラグインの仕様で対応できるように、案件の仕様を変える
(そうそう変えられるなら苦労しない) - CSSとかJavaScriptで何とかなるならなんとかする
(力技なので無理がある) - テーマやプラグインを改造する
(ちょっと、いやかなり危険)
という方法が考えられますが、私はこれらとは違うやり方で解決しました。
そのことについて、お話ししたいと思います。
このページは、子ページリストに出したくない!
Lightningのデフォルトサイドバーでは、固定ページのサイドバーウィジェットエリアに何もウィジェットを登録していない場合、自動で「固定ページの子ページ一覧」が表示されます。
親切な仕様に思えますが、この仕様だと「お問い合わせフォームの送信完了ページ」が存在すると、サイドバーに「送信完了ページ」が表示されてしまうのです。
本来ならフォームからメールを送信しないと表示されないページに直接アクセスできるようになりますので、かなり問題があります。
アクセス解析が役に立たなくなるし、申込された方だけの特典を用意しているのに誰でも特典がゲットできたりして、非常にまずいです。
ベクトルさんのフォーラムで解決策が無いか聞いてみたところ『子ページリストのリスト項目(liタグ)のclassに子ページのIDが入るので、デベロッパーツールで調べてCSSで非表示にする』という返答がありました。
もちろんその方法はわかっていたのですが、IDを調べてCSSで非表示にするというのはお客様がする作業ではありません。
せっかくWordPressでサイト構築をしているのに、お問い合わせフォームを増やしたり送信完了ページを作り直したりした際に制作会社に修正を依頼しないといけないというのでは、CMSを導入した意味がないですよね。
なんていうやりとりをしていると、石川さんから『対応したよ』という書き込みがあり、なんと VK All in One Expansion Unit の設定でページリストからそのページを除外する機能を追加していただきました。
神!
この機能によって、運用担当者が自分で申込フォームを作成したりできるようになり、大変喜ばれました。
投稿リストブロックで特定のカテゴリーを除外したい
投稿リストを表示する時、VK Blocks Pro の「投稿リスト」ブロックを使うと簡単にいい感じの投稿リストが表示できます。
あるウェブサイトで、トップページに注目してほしいカテゴリーの投稿を大きなサムネール付きで表示し、その他のカテゴリーの投稿はその下にシンプルに表示したいとの要望がありました。
トップページを固定ページで作成し、投稿リストブロックを複数配置し、それぞれでカテゴリーを絞り込んで表示スタイルを変えてやれば実現できそうです。
特定のカテゴリーに絞り込んで表示するというのは、投稿リストブロックの設定で簡単にできます。
そして、その他のカテゴリーの投稿リストでは先ほどのカテゴリーを除外しようと思ったのですが・・・残念ながら特定のカテゴリーを除外するという設定はできません。
だったらカテゴリーの絞り込みで先ほどのカテゴリー以外にチェックして絞り込めばいいと考えたのですが、そうなるとカテゴリーが増えた際に設定を変えないといけなくなります。
このときに制作していたサイトは、年に何度か必ずイベントやキャンペーンがあって、その期間は同じ話題でたくさん投稿されますので、カテゴリーをどんどん増やしたいのです。
その際にトップページの設定を変更するというのは、うっかりミスの危険もあり運用担当者に作業させたくありません。
何かいい方法が無いかとフォーラムに投稿したところ、CSSで除外したいカテゴリーの記事を非表示にするというアイデアをいただきました。
投稿リストブロックのリスト項目のclassにはカテゴリースラッグがつきますので、CSSで非表示にできます。
しかしこの方法では、最新の5件を表示するようにしていて最新の5件がすべて除外したいカテゴリーの記事だったら、投稿リストには何も表示されなくなってしまいます。
除外したいカテゴリーの記事をカスタム投稿タイプで作るという方法もあるのですが、これはお客様から却下されました。
『該当カテゴリーの記事と他のカテゴリーの記事には内容的に特に違いは無いのに、リスト表示の都合だけで投稿タイプを変えるのは本末転倒だろう』ということで、言われてみればごもっともです。
カテゴリーが除外できないのは、WordPressのクエリ―ループブロックでも同じです。
ただ、クエリ―ループブロックには query_loop_block_query_vars というフィルターフックがあり、ブロックに渡されるクエリーを書き換えることができるのです。
『投稿リストブロックを使うのをあきらめて、クエリ―ループブロックを使ったほうがいいのかな。でも投稿リストブロックみたいにいい感じにするためのCSSが面倒だな』などとフォーラムでやりとりしていたところ、石川さんから『来週頭くらいでもよければフックを追加しますが…』という書き込みが!
神!
これにより、お客様が投稿カテゴリーをどんどん追加できるという運用が可能になり、大変喜ばれました。
そのカスタマイズ、実は開発者の方にとっても有用な情報かも?
こういう話をすると『さすがベクトルさんのサポートは素晴らしい!』ってことになるわけですが、私が言いたいことはちょっと違うのですね。
もし今回のカスタマイズを自力でやっていたらどうだったか?
子テーマでカスタムテンプレートを作成したり、CSSを書いたりすることになったと思いますが、そんなコードを書いたら最後、サイトが閉鎖するか書いたコードが不要になるまで、テーマやプラグインのアップデートのたびに動作確認をしなければならなくなります。
しかしプラグイン開発側で対応していただけたなら、こちらで動作確認をする必要が無くなりますし、テーマやプラグインがアップデートしても合わせて修正していただけます。
お客様は安心してWordPressをアップデートできますし、メンテナンスする私たちも負担が軽減され安心です。
また、世の中には自分と同じ悩みを持っている方がおられます。
そのような方が、プラグインのアップデートだけで悩みが解決したら素晴らしいことです。
きっとその方も『ベクトルさんは神!』って思うでしょう。
悩みを共有することで「神を降臨させた」わけです(笑)
というわけで、既存のテーマやプラグインの仕様では案件の仕様に合わない場合の、私の解決法は
- 開発者に修正してもらう
でした!
なお、この方法は他の多くの方にも有用な場合にしか使えませんのでご注意くださいね。
来年もお世話になります!
よろしくお願いいたします。
明日はすぎしたさんです。
いつもベクトルさんのオンライン勉強会の懇親会でお会いしてますが、どんな記事になるのかたのしみです!
この記事を書いた人
-
FAシステムメーカー、国内最大手印刷会社製版部、印刷・ウェブ制作会社を経て、家庭の事情で実家に帰省して独立
現在はフリーランスと制作会社シニアディレクターのマルチワーク
ウェブ制作のほぼ全般を見渡せるディレクター業務が主だが、デザイン・コーディングも好き
1997年ブログ開設
WordPressコミュニティには2011年から参加
WordCamp Kansai 2016 セッションスピーカー
WordCamp Tokyo 2023 パネルディスカッションパネラー
WordBench京都、WordBench神戸、WordPress Meetup八王子など登壇多数
最新の投稿
ご質問・ご相談などありましたら
お気軽にお問い合わせください
資料請求・お問い合わせにはメールアドレスが必要です
コメントを残す