HOME  >  BLOG

translate by google

BLOG

  • 「FullSite-Patterner」WordPress公式ディレクトリ登録

    WordPressブロックテーマ「FullSite-Patterner」が、公式ディレクトリに登録されましたので、お知らせいたします。

    テーマのチェック、審査をしていただいた関係者の皆様に、心より感謝し御礼申し上げます。

    公式ディレクトリ登録までの審査の経過

    2023年3月27日に「FullSite-Patterner」バージョン1.0.0により登録申請をして以来、最初は不備が多く、4月6日には審査がクローズとなってしまいました。

    プラグイン「Theme Check」でのチェックは行っていたものの、審査で指摘された「Theme Sniffer」でのチェックは行っていなかったため、多数のエラーがありました。

    エラーを1つずつ修正していきましたが、1つだけ解決できない問題がありました。

    Bootstrap3.3を動作させるために、J-Queryの古いバージョンを同梱する必要がありましたが、その削除が必要とされたためでした。

    Bootstrap5.0.2に対応

    古いバージョンのJ-Queryなしでも動作させるため、最新のBootstrap5に対応するよう、テーマの大きな修正が必要となりました。

    ただし大きく影響を受けるのは、ヘッダーナビゲーションやテーマ独自のスタイルシートでした。

    これらを修正し、4月14日に再申請を行い、チェックを受けてきましたが、パターン内にうまくレンダリングされず、プレビューで正常に表示されないものがあったりと、何度かの修正を行いました。

    スタイルシートに記述したクラス名や、関数名に名前空間を付けて修正するなども行い、バージョン1.0.4でようやく公式ディレクトリに登録されることとなりました。

    WordPress無料テーマ「FullSite-Patterner 1.0.4」ダウンロード

    下記のWordPress公式ディレクトリから無料ダウンロードが可能です。

    プラグイン「FullSite-Patterner plugin」

    テーマに付属するパターンを独自カテゴリーに分類するため、「FullSite-Patterner」のご利用にはプラグインが必要です。

    プラグインをインストール、有効化しない場合には、パターンのプレビュー表示にかなりの時間がかかる、探すのが大変といった使いにくさが生じます。

    プラグインは当サイトで無料配布しております。

    今後の開発方針(1)有料テーマ

    今回、公式ディレクトリに登録されました「FullSite-Patterner」無料テーマは、多数のパターンを使える有料テーマの開発と同時並行で行ってきました。

    有料テーマのダウンロードは、パターンなどの最終チェックを経たうえで、近日中に当サイトにおいて開始いたします。

    今後の開発方針(2)有料プラグイン

    有料テーマ「FullSite-Patterner」と同等のパターンを、他のテーマでも使用可能なプラグインの開発に着手いたしました。

    中心となるphpファイルの準備と、一部のパターンファイルを使った表示テストまでは行っております。

    無料テーマの当サイトでの配布や、今後の改良なども含め、より詳しい情報は当サイトにてお知らせいたします。

  • プラグイン「CreateBlockTheme」による勝手な書き替えと、WordPress6.2による勝手な挙動メモ

    ブロックテーマの作成にプラグイン「CreateBlockTheme」を使用して、テーマを修正し「上書きする」際に、いくつかの勝手な書き替えが起きる現象に頻繁に遭遇しました。

    プラグイン「CreateBlockTheme」の便利さについてこのブログに以前に書きましたが、下記現象により現在はあまり使用していません。

    なおこれらの書き替え現象は筆者の環境で、「CreateBlockTheme」(バージョン1.6.2)WordPress6.1.1または6.2で確認できたものであり、異なる環境やバージョンでの再現性については不明です。

    作成したテンプレートパーツと同じブロックパターンが勝手に作成され、パーツの内容が書き替わる(WordPress6.2でのパターン挿入時のプレビュー表示に不具合)

    ※3月27日に公式ディレクトリに登録申請した時点では一部に未対応。
    ※4月1日から開始しております無料版ダウンロードでは対応済です。

    テーマの作成や修正にあたり、テンプレートパーツを作成します。
    このとき、たとえば「menu1-4」という名称のテンプレートパーツを作成したときに、「menu-1-4」という名称のブロックパターンが勝手に生成されています。

    ファイル名の数字の前後には、勝手に「-」が入っていることに注意。

    問題点1

    元のテンプレートパーツ(例:「header」)の内容が、コードで記述したたとえば下記のような内容

    <!-- wp:html {"lock":{"move":true,"remove":true}} -->
    <div id="top"></div><a href="#top" class="pagetop"></a>
    <!-- /wp:html -->
    (以下、略)

    であったとしても、「CreateBlockTheme」でテーマを上書きすると、テンプレートパーツの内容

    <!-- wp:pattern {"slug":"header","theme":"fullsite-patterner","area":"header"} /-->

    のように、生成されたブロックパターンを読み込む内容に勝手に書き替わってしまいます。

    問題点2

    上記のように、テンプレートパーツの記述が、ブロックパターンを読み込む内容になっている場合、WordPress6.1では、エディター画面ではパターンの内容もきちんと表示されていました。

    ところがWordPress6.2になったら、テンプレートパーツ中のパターンの内容がエディター画面には表示されず、左側のツリーメニューでも単に「パターン」としか表示されません。(パターン内の構造がわからない)
    この場合、そのテンプレートパーツを「テンプレートパーツから切り離す」と、パターン内の構造がツリーに表示され、エディター画面にも内容が表示されます。

    対応策:テンプレートパーツにはパターンと同じコードそのものを、「ツール」-「テーマファイルエディター」から書き、プラグイン「CreateBlockTheme」は使わない。

    問題点3

    上記と同様に、テンプレートパーツの記述が、ブロックパターンを読み込む内容になっている場合WordPress6.2になったら、そのテンプレートパーツを含むブロックパターンを、エディター画面で左側メニューから挿入しようとしたときに、テンプレートパーツの内容であるパターンがプレビュー表示されません
    (WordPress6.1では表示されていました)

    対応策:上記と同じ。

    問題点4

    元のテンプレートパーツファイル名に数字が入っている場合、たとえば「menu1-4」が、勝手に生成されるブロックパターンでは「menu-1-4」になってしまいます。

    対応策:内容が同じテンプレートパーツとブロックパターンを作成する場合には、テンプレートパーツのファイル名は、数字の前後に最初から「ー」を入れておかないと、混乱の元になります。

    パターン内のURLが勝手にエスケープURLに書き換えられる現象

    ブロックテーマの作成にプラグイン「CreateBlockTheme」を使用して、テーマを修正し「上書きする」際に、例えば画像URLが、元のパターンでは

    <img src="<https://full-site-patterner.com/img/menu1.jpg" alt=""/>

    であった場合でも、

    <img src="<?php echo esc_url( get_stylesheet_directory_uri() ); ?>/assets/img/menu1.jpg" alt=""/>

    のように勝手に書き替わってしまいます。

    その意図は理解できなくもないのですが、テーマディレクトリ内のフォルダにアクセスされたくない場合や、あえて別の特定ディレクトリ内の画像を読み込ませたい場合に、困ります。

    きちんと表示されていたブロックパターンが、サイトの上書きをしただけで、画像などが適切に表示されなくなってしまう、しかも数多くのパターンでそうなってしまう現象には悩まされました。

    対応策:現状でプラグイン「CreateBlockTheme」はほとんど使用せず、「ツール」-「テーマファイルエディター」でパターンを編集するか、ローカルでファイルをテキストエディタで編集しています。

    WordPress6.2のエディター画面のリロード、または更新で、カスタムhtmlに一定条件で勝手にpタグが挿入される現象(pタグのスタイルによっては表示が崩れる)

    ※3月27日に公式ディレクトリに登録申請した時点では未対応。
    無料版ダウンロードでは4月3日19時に対応済です。

    WordPress6.2になってから、エディター画面でテンプレートをリロードまたは更新したときに、カスタムhtmlブロックに勝手にpタグが挿入される現象が見られます。

    筆者が経験しているのは、aタグbuttonタグで、勝手にpタグで囲まれてしまいます
    pタグ内にあるべきと判断されたタグにこの現象が起きるものと推測していますが、pタグにmarginやpadding等のスタイルが設定されているときに、単に画面をリロード、またはテンプレート更新をしただけで、表示が崩れてしまいます。

    対応策:pタグが勝手に挿入され囲まれてしまう部分には、あらかじめdivタグを入れて囲んでおけば、リロードまたは更新をしても勝手に書き替えられないことを確認しています。

  • WordPressブロックテーマ「FullSite-Patterner」(フリーedition)の公式テーマディレクトリ登録申請

    2023年1月初旬より開発を進めておりましたWordPressブロックテーマ「FullSite-Patterner」(フリーedition)の公式テーマディレクトリ登録申請を、本日3月27日に行いました。

    WordPress.org1のユーザー登録を行い、テーマのアップロード画面にて、ZIPファイルをアップロードします。

    事前にプラグイン「Theme Check」でチェックを行っていますが、アプロードの際にチェックが行われます。

    style.cssにある、テーマURLと作者URLが同一ではだめとのメッセージがあり、訂正しました。

    ハードコーティングのリンク先があること、iframeがあることの「情報」が表示されましたが、ブロックパターンの一部にこれらがあることは事前チェックでわかっていたため、そのまま進めました。

    その他にも、screenshot.pngのファイルサイズが大きいとのメッセージが表示されてしまいましたが、アップロードは完了です。

    テーマのアップロード確認のメールが届きます。

    また、フィードバックのあるページのURLが設定されました。

    近日中にダウンロードできるよう、当サイトのページを設定する予定です。

  • ブロックテーマ「FullSite-Patterner」のコンセプト

    FullSite-Patterner」は、フルサイト編集機能をフルに活用するとともに、ブロックテーマの登場によって従来のテーマから、「テーマの役割」が大きく変わることを予期して開発し、リリースしたブロックテーマです。

    フル機能版は有料テーマとなりますが、無料で利用できる「FullSite-Patterner」でも、サイト全体を着替えるように取り替えられるプラグインなしでユーザー独自のブロックパターンが作成・保存できるなどの特徴があります。

    WordPressテーマの新しい考え方

    従来のWordPressテーマといえば、クラシックテーマに代表されるように、テーマを変更することにより、サイトのデザインを変更できるという利点がありました。
    しかしブロックテーマによれば、そもそもエディターでデザインを自由に変更できるため、テーマ=テンプレートであるかのような概念とは異なる考え方のもとに、「FullSite-Patterner」は開発されています。

    従来のテーマでは、特に日本では、テーマ独自のカスタマイズメニューから、「ブロック」、「見出しの装飾」、「吹き出しの装飾」、「リンクメニューやボックス、カード」の装飾など、WEBデザインに重要ではあるものの、最重要ともいえない機能にこだわったテーマ制作、ユーザーによる利用が目立っていたように思います。
    しかしこの点についても、ブロックテーマではプラグインや、公式サイトその他でのパターンの配布などを通じて、どのテーマを使おうが利用できるデザインパーツが増えました。

    WordPressのブロックテーマでは、ノーコード制作フルサイト編集機能により、コードを書けない、わからないユーザーでも、簡単な操作でデザインをカスタマイズでき、コンテンツ制作、執筆に専念できる環境が求められているといえます。
    些細な部分の装飾よりも、コンテンツそのものの質、デザインの調整やSEOなどのWEB施策を意識しないでできることがより重要であるといえるでしょう。

    ブロックテーマはまだ発展途上であり、使いにくいところ、足りない機能があると思われます。
    またブロックテーマ特有の、独特のコードやタグが勝手に挿入されたり、スタイルや機能がブラックボックス的なと点も多いと見受けられます。
    しかし誰もがノーコード制作、フルサイト編集ができる環境を構築することをWordPress開発者が志向していることは明白です。

    従来のテーマでは、独自のカスタマイザーなどのメニューを多用して、ともすれば機能が増えるにつれ、メニューが複雑化して、テーマ独自の使い方を覚えなければならなくなるというジレンマもありました。

    FullSite-Patterner」は、テーマ独自のメニューを極力少なくし、デザインや機能もできるだけWordPressデフォルトのメニューを生かし、デフォルト画面から使える普遍的、汎用的に操作できるテーマとして、開発されています。

    FullSite-Patternerの主要機能

    ・簡単に設置でき、サンプルデータのインポートで、サンプルサイトがあっという間に完成し、サイトにある説明を確認しながらコンテンツを置き換えて、独自サイトにカスタマイズしていくことが可能

    ・テーマ付属のプラグインで、意識しないでも自動的にSEOに最適化、WEB運営や書くことに専念できる

    ・ページ全体のテンプレートセット(1カラム、2カラム、全幅ページ、背景画像アリ・なし等)が、差し替え可能なブロックパターンとしてあらかじめ設定

    ・パーツのブロックパターンと合わせ、何百通りものWEBデザインを1つのテーマで実現し、配置、差し替えもフルサイト編集で自由

    ・デフォルトテンプレートをはじめ、ページ全体のテンプレートセットが多数、ブロックパターンで用意されているため、いつでも初期状態に戻せる

    ・ブロックパターンで用意されたテンプレートセットがあるため、テンプレートやテンプレートパーツの重要性は低く、子テーマを使わずに直接テンプレートをユーザーが編集し、カスタマイズしてもOK

    ・テーマの普遍性を重視し、WordPressデフォルトのスタイルやメニューは極力生かし、一部機能・デザイン(ナビゲーション、3段階レスポンシブデザイン)の実現のため、bootstrapから抜粋したスタイルシートを採用

    ・ブロックテーマのデフォルトの機能では実現しにくい、ページのhead内に挿入するタグ、コードなどをウィジェットで保存し、挿入する機能

    ・ブロックテーマのデフォルト機能では実現しにくい、エディターのUIやtheme.jsonでは難しいユーザーによるスタイルのカスタマイズを、ウィジェットで設定し反映させる機能

    ・ウィジェットで、htmlコードでの入力や、ブロックの挿入などでユーザー独自のブロックパターンを作成し、ウィジェットとして保存し、patternフォルダ内のパターンファイルに挿入する、オリジナルパターン作成機能

    ・多彩なカスタマイズはエディターのUI、ブロックパターン、利用する・しないはユーザーが自由選択のphpファイルとプラグイン、theme.jsonなどで実現し、WordPressデフォルトメニューを尊重し、テーマ独自の仕様は極力排除

    ・テーマに依存することなく、プラグイン化によって上記の多彩な機能を他のテーマでも利用可能にする開発方針(予定)

    「FullSite-Patterner」の名前の由来

    FullSite-Patterner」は、開発当初は「ForestCafe-Block」として制作を行っていました。
    各サンプルサイトのモチーフとして、架空のカフェ「ForestCafe」のサイト名を使用している理由です。

    FullSite-Patterner」は、「フルサイトパタンナー」と読み、FullSiteはもちろんフルサイト編集の意味合いです。

    Patterner」は、和製英語として日本で長らく使用されている言葉で、服の型紙を制作する職種を意味します。
    一方、「Patterner」は英語では「木型師」の意味合いがありますが、古くは木材で洋服のマネキンの木型なども製作していたことを思えば、同じような意味合いともいえます。
    その他には設計ツールのような意味合いで使用されることもある言葉です。

    パタンナーは、身体に合わせた服を製作、製造するためには不可欠の職業です。
    大量生産の既製服はもちろん、一人一人の身体に合わせた仕立服ではきわめて大切な役割を果たします。

    しかし実際に服を着ているときに、パタンナーの存在を意識する人などほとんどいないでしょう。

    WEBサイトのコンテンツ制作、執筆、サイト運営においても同じことがいえます。
    コードを書けないユーザーでも、簡単な操作でデザインをカスタマイズでき、コンテンツ制作、執筆に専念できるツール、コンテンツそのものの質、デザインの調整やSEOなどのWEB施策を意識しないでできるツールとして、テーマのコンセプトを名前に込めました。

    もちろん「Patterner」の「Pattern」はブロックパターンのことでもあり、ページ全体のパターンをも意味しており、フルサイトをテンプレートセットのパターン化したWordPressテーマが「FullSite-Patterner」です。

  • WordPressブロックテーマの開発

    2022年末から、WordPressのクラシックテーマを、1カラムのテーマ、2カラムのテーマなど制作していました。
    もとはといえば2021年春頃に、それまでMovableTypeでサイト運営に利用していたテンプレートを、WordPressに移植しようと作っていたものです。

    年末年始にはだいたいの形まで出来上がりましたが、ネットや動画サイトでWordPressの勉強をするうちに、ブロックテーマを作成できないだろうかと思い始めました。

    一番わかりやすかったのは、Youtubeの動画、WEBサイトチャンネルが配信する「WordPressブロックテーマ公式通りに作ってみた!&カンタン解説!」でした。
    ただ、この動画は、2022年春頃のもので、WordPressのバージョンが5.8の時のものであり、現在は6.1.1。

    実際、動画で参考にされていたWordPress公式サイトの解説も少し古くなっていて、しかも詳しく知りたいところまでは書いてなく、参考資料が不十分なものでした。

    ブロックテーマ制作に関する情報はあまりに少なく、一部海外の情報もgoogle chromeの翻訳で読みましたが、やはり不十分なものでした。

    それでも、最初は操作に慣れず苦労したとはいえ、ブロックテーマの操作には触ってみて感覚的に覚えるといった面があったため、試しに作ってみることにしました。

    ほかに参考にした情報は下記の通りです。

    ブロックテーマ WordPress公式サイト
    フルサイト編集に対応したブロックテーマを作ってみる オレインデザイン
    WordPress のフルサイト編集で使えるブロックテーマを作ってみた データベースに接続できません
    WordPressサイトエディター対応のブロックテーマ開発(基本編) Kiwi blog
    WordPressブロックテーマを作ってみた Koro-Koro.com

    というより、正直まともな情報はこのくらいしかありませんでした。

    参考書籍

    2月初旬になって、エビスコムさんの書籍「作って学ぶ WordPress ブロックテーマ」が発売になりました。

    これにより、ビジュアルエディターやコードエディターで編集したはずのテーマが古いバージョンに戻ってしまう、FTPでバックアップしたつもりのファイルが実は古いままのもので、上書きしてしまい、また作り直し、といった失敗の原因もだいぶわかりました。

    後で注意点でも述べますが、WordPressは情報が多いといいながら、公式の情報が不十分、特にβ版のブロックテーマに関してはバグかもしれないものもあり、デフォルトのcssなどブラックボックス的なところもあります。

    1か月近くもかけて大体のところが完成したブロックテーマ開発の備忘録として、残しておいた方がよいと考えていたため、リアルタイムではないものの、作業の経過をメモにしておきます。

    ただし最初のころの作業はひたすらブロックの操作を覚えながらいじっては壊していたようなもので、細部までは覚えていません。

    意外にもフロントページが1日でできる

    前述の動画「WordPressブロックテーマ公式通りに作ってみた!&カンタン解説!」を深夜に布団の中で見た翌日、さっそく、これまでに制作したテーマをブロックテーマで作ることをやってみました。

    動画を見ながら、しかし動画で参照しているWordPress公式サイトの内容が少々違うので、ネットで調べながら、それでもわからずに無闇にいじりながら無謀な作成をしました。

    今でも原因がわからないのですが、一番最初の作業である、WordPress のテーマとして認識させるためのフォルダ構造、index.php と style.cssの作成と、スタイルシートへのテーマヘッダの記入の部分で、恐ろしく手間取りました。

    また、theme.jsonというものはよくわからず、情報も少なく、それでもほとんど空白でも作業は進められました。

    htmlに関しては手打ちもでき、20年近くも使い続けているMovableTypeのタグや、最近ではWordPressのphpも勉強してわかってきていましたが、ブロックテーマの独特のタグは、いまでもなじめません。

    何度も何度もやり直すうちに、動画を見た翌日に、フロントページが出来上がりました。

    レスポンシブとナビゲーション、デザイン上の不満

    さて、せっかくここまで1日で進めながら、いったんブロックテーマは放置し、クラシックテーマの制作に戻ってしまいました。

    レスポンシブデザインが、PCとモバイルの2段階であったこと、そしてナビゲーションのハンバーガーメニューがデザイン的に貧弱であったためです。

    デザイン上の制約があり、スタイルの適用もブラックボックスで、テーマ独自のcssをいじっても思い通りにならないことも多くありました。

    クラシックテーマでは、MovableTypeのテンプレートで使用していたデザインをほぼ再現でき、PC、タブレット、スマホの3段階のスムーズなレスポンシブデザインで、bootstrapのcssから必要な部分だけを抜き出して使っていました。

    ところが作成したブロックテーマでのレスポンシブでは、タブレットサイズ程度に画面を狭めると、かなり見づらくなってしまい、スマホサイズでの表示との落差が大きくなってしまいます。

    bootstrapのcssを適用すれば、クラシックテーマではスムーズな3段階になるのに、ブロックテーマではさまざま試みてもいっこうにできませんでした。

    また、ハンバーガーメニューについては、WordPressデフォルトのナビゲーションでは、バリエーションも少なく、開くときのボタンの位置と、閉じるときの×の位置ともずれて表示されました。

    対処法はあるのかもしれませんが、わかるはずもありませんでした。

    デフォルトのスタイルを一部排除することで、3段階のレスポンシブを実現(※後日追記・スタイルの一部排除の方法は却下)

    それでもあきらめられず、1月前半から中旬にかけて、再度ブロックテーマの制作に取り掛かりました。

    ブロックテーマでは、そのページに適用されるcssのスタイルが、htmlのヘッドに抜き書きのように列挙されて記載されています。
    そのどれかがbootstrapのcssより優先されているとあたりをつけ、さらにWordPressのデフォルトのcssがどこにあるのか、相当に探しました。

    ナビゲーションについてはだいたい分かったものの、レスポンシブは2段階になっている程度のことしわかりませんでした。

    ここでかなり原始的な方法になりますが、ページに適用されているデフォルトのスタイルを、1つ1つはずしたら、どれが影響しているのかわかると思い、調べました。

    クラシックテーマでは、WordPressが勝手に吐き出すデフォルトのスタイルは排除し、すっきりするhtmlソースにするようにしていました。

    MovableTypeでは、自分の意図しないcssが適用されることはなく、すべて管理画面で自分で管理でき、ブラックボックスがありません。

    とにかく、レスポンシブとナビゲーションを解決しないと、自分の中ではブロックテーマは使えないという気持ちで、次の作業を行いました。

    ・デフォルトのcssを排除する方法をネットで調べ、functions.phpに記載して排除する。
    ・そのうえで、排除したcssをテーマ独自のcssに移し、1行ずつ、削除しては表示を確かめ、どれが影響しているのかを特定する。

    ブロックテーマの場合には、誰でもデザインをカスタマイズできるようにしている利点もあるため、デフォルトの仕様を排除するのではなく、残せるだけ残す方法に変えました。

    その結果、bootstrapの3段階のレスポンシブを妨げているのは、たった1行だけと分かりました。
    functions.phpで、下記のようにglobal-stylesをいったん排除。

    
    /* global-stylesのインラインCSS出力を排除する */
    add_action('wp_enqueue_scripts', 'remove_global_styles');
    function remove_global_styles() {
    wp_dequeue_style('global-styles');
    }

    実際に障害となっていたのは、global-styles-inline-cssの中の、

    body .is-layout-flex{display: flex;}

    の1行だけ。
    そこでこの1行を除くglobal-styles-inline-cssを、テーマ独自のcssに記述し、残しました。

    ただしもう1点、レイアウトを崩す原因として、下記のcssも排除しました。

    /* wp-block-columns-inline-cssのインラインCSS出力を排除する */
    function prefix_remove_core_block_styles() {
    	wp_dequeue_style( 'wp-block-columns' );
    	wp_dequeue_style( 'wp-block-column' );
    }
    add_action( 'wp_enqueue_scripts', 'prefix_remove_core_block_styles' );

    実際に排除したスタイルが不明にならないように、テーマ独自のcssの中のコメントアウト内に、排除した10行ほどのスタイルをコメントとして記述してあります。

    いずれもブロックのレイアウトに関するスタイルです。

    (2023/2/21後日追記)

    レスポンシブとナビゲーションのhtmlソースを改善すれば、WordPressデフォルトのスタイルを排除する必要はないのではないかと思い立ち、実行したところ即日、問題解消。

    具体的にはレスポンシブについては、「カラム」ブロックで作成していたため、自動的にis-layout-flexのclassが付与されていたことが原因と思い立ち、「グループ」ブロックで作り直したところ、あっさり解決。

    ナビゲーションについては、テーマエディターで指定していた背景色と文字色が、本来はPCとスマホで白黒逆なのに、どちらにも同じ配色が適用され、スマホでメニューが読めなくなるため、テーマエディターでの色彩指定をリセット。
    cssの指定を少し追加し、問題解消。

    その結果、WordPressデフォルトのスタイルはすべてそのまま適用しても表示に問題が生じなくなり、テーマとしては汎用性が高まることとなりました。

    完成した3段階レスポンシブデザイン

    ハンバーガーメニューのデザインに取り掛かる

    そのあと、ナビゲーション部分のハンバーガーメニューの改善にとりかかりました。

    最初に行った方法は、スマホメニューの「開く」「閉じる」ボタンが、それぞれ

    button.wp-block-navigation__responsive-container-open
    button.wp-block-navigation__responsive-container-close
    でスタイルを定義され、svg画像で表示されていることがわかりました。

    この背景に色を付け、角のまるみを付けて円形のマークが背景に来るようにし、位置調整をして「開く」「閉じる」ボタンが同じ位置にくるようにしました。

    100%満足とは言えないものの、一応は納得できるものが1月中旬にはできていたのですが、今見ると表示位置がずれてしまっています。

    その後半月の間にいじったスタイルの何かの影響でしょう。

    さらに1月中旬以降に、ナビゲーションはやはりbootstrapのnavbarを使ってできないかと考え、再チャレンジすることにしました。

    bootstrapのcssを使ったナビゲーションとハンバーガーメニューは、一例としては下記のようなhtmlソースで、ちょっと複雑です。

    <div class="is-layout-constrained wp-block-group navbar navbar-default navbar-static-top navbar-fixed-top">
    <div class="is-layout-constrained wp-block-group clearfix header-container">
    <div class="is-layout-constrained wp-block-group navbar-header">
    <div class="is-layout-constrained wp-block-group pull-left site-logo">
    <div class="wp-block-site-logo"><a href="https://*****" class="custom-logo-link" rel="home"><img loading="lazy" width="320" height="58" src="https://*****.png" class="custom-logo" alt="ForestCafe-block" decoding="async"/></a>
    </div>
    </div>
    
    <button type="button" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button>
    </div>
    
    <div id="navbar" class="is-layout-constrained wp-block-group navbar-right navbar-collapse collapse menu-global has-white-color has-black-background-color has-text-color has-background">
    
    <ul class="nav navbar-nav menu-global-main has-white-color has-black-background-color has-text-color has-background has-large-font-size">
    <li><a href="https://*****/">■HOME■</a> </li>
    <li><a href="https://*****/">■HOME■</a> </li>
    <li><a href="https://*****/">■HOME■</a> </li>
    <li><a href="https://*****/">■HOME■</a> </li>
    </ul>
    </div>
    </div>
    </div>
    </div>

    面白いもので、一日中さんざんやってできなかったのに、翌日にすんなりできるということが何度もありました。
    朝から悪戦苦闘した結果、夕方には急にできるということもありました。

    bootstrapを使ったソースコードを見ると、ハンバーガーメニューの部分は、ulとliが主体であることがわかります。
    PC用のナビゲーションはできていたので、これをどう実現するか、なぜ実現できないのかを、cssのclassを中心に調べました。

    最初は固定観念として、ヘッダー部分のナビゲーションは、ブロックテーマの「ナビゲーション」ブロックを使うものだと思っていましたが、サイトロゴは普通の画像にし、ナビゲーションは「リスト」にすることで解決しました。

    bootstrapを使ったhtmlコードでは、何重もの入れ子の中に、それぞれのdivにclassが割り当てられているため、ブロックテーマの「グループ」ブロックを入れ子にしました。

    エディターで「グループ」であるdivを選択すると、サイトエディターの右下に、「高度な設定」とあり、クリックすると追加でcssのclassを割り当てられるため、元のhtmlソースをもとにclassを割り当てていきました。

    悪戦苦闘した結果、詳細な経過は忘れましたが、ブロックテーマ独自のスタイルのclassも割り当てられていたため苦労したものの、bootstrapのスタイルを適用したハンバーガーメニューが完成しました。
    夜中までやってできなかったのに、翌日やったら割とすぐにできたという感じです。

    なお、ハンバーガーメニューを開いたときに、左上に出る矢印は、ページのトップに戻るためのボタンです。

    PC表示では右下に固定表示されます。

    これについてもかなり苦労しましたが、テーマ独自のscriptはfunctions.phpで読み込む処理を書くのが原則。

    しかしそれをやっても読み込みはされるものの、スマホでは動作せず、原因がわかりませんでした。
    ようやく、footer部分に入れれば動くことを確認したものの、functions.phpにその読み込み処理を書いても動作せず、やむなくテーマエディターで、「カスタムHTML」を選択して直接scriptの読み込みタグを書き、動作するようになりました。
    (その後解決、functions.phpでの読み込み処理だけで動作するようになったが、結局原因はわからず)

    ただ、ハンバーガーメニューを閉じているときに適切な位置に表示することができていないため、開いたときに表示される形になっています。
    この点はまだちょっとわからないものの、ページトップに戻るボタンは重要性が高くなく、スマホではかえって誤操作のもとになる邪魔なものと考える人もいるため、一応これでOKとしています。

    (※2023/2/21追記)

    ページトップに戻るのボタンは、ナビゲーションメニュー内にテキスト「▲」で設定。

    動作させるためのJavaScriptはタグをhead内に出力させるためのfunctions.php内の記載に誤りがあったことと判明し、問題解消しました。

    具体的には、読み込むJavaScriptのバージョン指定をしていなかったため、勝手にWordPressのバージョンである6.1.1がJavaScriptのバージョンとして勝手に付与されてしまったことと、2つあるJavaScriptの読み込みの順番が悪かったことのせいで、順番を1行逆にして問題解消しました。

    本格的なブロックテーマ制作へ

    ブロックテーマの制作を進めるかどうかは、3段階レスポンシブと、ナビゲーションにかかっていたため、両者が解決したことで、本格的にブロックテーマの開発を進めることになりました。

    1月後半には、単一記事ページ、アーカイブ記事ページ、固定ページ、404ページ、検索ページの作成を進めていきました。

    しかし困ったのは、テーマエディターでデザインを更新したにもかかわらず、翌日にいじると古いバージョンに戻ってしまい、また作り直す羽目になることが何度も起きたことです。

    これはブロックテーマを制作するときのかなりの注意点です。

    結論をいってしまえば、テーマエディターで、ビジュアルエディターであってもコードエディターであっても、テンプレートを更新しただけでは、実際のテンプレートファイルは更新されていないことです。

    ではなぜデザインが更新されるかといえば、記事の内容などと同様に、データベースに保存されているのです。

    したがって、毎日FTPでテーマをダウンロードして保存していましたが、それが最新のバージョンでなかったということになります。

    テーマエディターで更新した内容を、テーマのテンプレートそのものに反映させるには、zip形式でエクスポートする方法もありますが、私の環境かサーバーの環境か、エクスポートしたzipファイルは無効というメッセージが出て開けません。

    やむなく、「ツール」-「テーマファイルエディター」のメニューから、テーマエディターで編集したコードを、コピー&ペーストして更新し、これで最新のテンプレートを残すようにしていました。

    しかし、より簡単な方法があります。

    「Create Block Theme」プラグインをインストールし、「(テーマ名)に上書きする」をチェックして「生成」ボタンを押せば、最新のテーマ編集内容が実際のテンプレートなどに反映されます。

    このプラグインでも私の環境ではなぜかエクスポートがうまくできませんが、最新の編集内容があっという間に保存できるため、何度も壊れてはやり直しということがなくなりました。

    それ以外にも要注意な点があります。

    テンプレートパーツを作成した後で、他のページでテンプレートパーツを使いまわし、その内容をページに合わせ編集するときは、パーツを「テンプレートから切り離す」手順を踏むことが必要です。

    これをしないで編集すると、他のページで使っている同じテンプレートパーツにも変更が反映されてしまいます。

    こうした注意点がわかって、作業が効率的になったのは、エビスコムさんの書籍「作って学ぶ WordPress ブロックテーマ」を入手し、テーマのデザインの大半が完成した2月初旬のことでした。

    本日時点のブロックテーマのデザイン

    現在~今後の開発方針

    今回のブロックテーマのコンセプトとしては、下記のようなものを目指しています。

    1つのテーマで1カラム、2カラム、全幅のページ、背景画像あり&なしなど、数多くのデザインのサイトをあっという間に配置でき、差し替えができるテーマ

    設置方法&使用方法の説明があるサイトのデータをインポートすれば、すぐにサンプルサイトが完成するテーマ

    自動的にメタタグ、canonicalが入るが、自分で入力した場合にはそちらが反映され、構造化データ、パンくずリストなどの機能も自動的に適切に入るため、記事のライティングに専念できるテーマ

    これらのデザイン、機能も1月後半から2月までに多くができ、今後はデザインバリエーションを増やすこととしています。

    テーマ独自のカラーパレットの設定も行いました。

    同時に、公式テーマに認定されるためのテーマチェックを、プラグイン「Theme Ckeck」で行い、1つ1つ解決し、プラグインでのテストには合格したところです。

    なおクラシックテーマ(1カラム、2カラム)についても、もう少しでテストに合格しますが、functions.phpを分割してプラグインに分ければいいだけです。

    昨日は、メタタグ&canonical&構造化データの機能を、funtions.phpから分割してプラグインにし、動作させるところまでを完了しました。

    今後はブロックパターンを利用することにより簡単にデザイン変更ができるバリエーションの制作と、プラグイン化を行う予定です。

    サポートサイトの制作、テーマの国際化なども今後の課題です。

    追加のテストもクリア

    2月20日には、追加で下記のテストを行いました。

    テストデータでの表示テスト

    画像、埋め込み動画、コメント投稿、各国語テキストなど、様々な条件でのテーマの表示、動作を検証する、WordPress推奨のテストデータをインポートして、テストを行いました。

    WordPress6.2ベータ版での表示テスト

    3月末にもリリースされるWorpPress6.2ベータ版での表示テストも行いました。

    いずれのテストもクリアできています。

    最新(2023年2月21日)の機能追加

    メタタグやパンくずリスト、canonical、構造化データなどを自動or手動挿入できるプラグインを、テーマインストール時に同時にインストールするよう促すphpを同梱。

    ・css、functions.php、プラグイン等のソースのコメントの英訳版を制作。

    ・Front-page12パターンのテンプレートパーツを制作。
    ・index、single、page、search、404なども同様に制作予定。

    ・header、footer、loop、メニュー、ピックアップコンテンツ、その他のパーツも制作。

    ・テンプレートパーツはさらに、テーマ独自ブロックとしても設定。

    ・「外観」-「ウィジェット」メニューから、ユーザーがオリジナルでブロックを登録できる機能を追加。

    今後の開発予定

    ・サポートサイト(日本語サイト、英語サイト)の制作中。

    ・readmeテキスト

    ・テーマ独自のテンプレートパーツ、ブロックパターンの追加。

    ダウンロードサイト(無料テーマ、有料テーマ、無料プラグイン、有料プラグイン)の制作。

    ・メールフォームの作成・設定

    (※当面ここまででWordPress6.2対応として公式サイトテーマ申請予定)

    ・Theme-jsonでスタイルの整理。

    ・テーマ独自のブロックパターンの汎用化(プラグインで他のテーマで利用できるもの)※検討中