【WordPress】ブロックエディタで作るサイト制作のメリットと注意点

WordPressには用途や規模に応じて、さまざまな実装方法があります。
通常の案件では、phpのテーマファイルに直接コードを記述する形でサイト制作を行うことが多いのですが、稀にブロックエディタを使用する機会もあり、その過程でいくつかのメリットと注意点があると感じました。
本記事では、実際の制作経験をもとに、ブロックエディタを用いたサイト制作のメリットと注意点について解説します。

1. ブロックエディタとは

WordPressの投稿・固定ページ作成には、主に「クラシックエディタ」と「ブロックエディタ(Gutenberg)」という2つのエディタがあります。現在のWordPressでは、ブロックエディタが標準のエディタとなっており、テキストや画像、見出しといった要素を「ブロック」単位で組み立てていくのが特徴です。ブロックエディタを用いたサイト制作の場合、クライントは管理画面上で完成形に近いレイアウトを確認しながら作業できるため、頻繁にページの更新を予定しているサイトや、同じレイアウトでたくさんのページを構築する必要がある大規模サイト等に適しています。

2. ブロックエディタを用いたサイト制作のメリット

2-1. コーディングの工数を抑えられる

テンプレートファイルに直接コーディングする場合、別のページで同じパーツを使う祭にHTMLをコピー&ペーストする必要があります。この方法では、意図しない階層構造のズレが発生したり、編集後に都度フロント側の表示確認が必要になる等、確認ステップが増えがちです。
一方、ブロックエディタを使用したサイト制作では、一度パーツのスタイルを定義してしまえば、ブロックとして呼び出して配置することが可能です。theme.jsonやeditor-style.cssを使用し、ブロックエディタの見た目をフロントと同期させておけば、管理画面上でも完成形に近い状態を確認しながらパーツを配置できます。
特に大規模なサイトでは、下層ページで共通の見出しや画像パーツを使うケースが多くなるため、ブロックエディタの恩恵を受けやすいと言えます。

2-2. デザインに統一感をもたせることができる

ブロックエディタを用いたサイト制作では、「見出し」や「テーブル」「画像」といったパーツ単位でデザインを作成し、それらのパーツを使ってページを構築していくため、すべてのページのデザインに統一感をもたせることができます。
反対に、下層ページごとに個別のデザインを作り込むということは、あまり行いません。
ブロックエディタではデザインの柔軟性が下がるという意見もありますが、CSSで表現可能なデザインであれば、十分に対応が可能です。

2-3. 再利用・共通化がしやすい

先述のパーツ単位での流用はもちろん、複数のパーツをまとめた「ブロックパターン」をあらかじめ作成しておくことで、そのパターンを別の投稿・固定ページで呼び出すことができます。

また、ブロックパターンで構築するのが難しいパーツ(例えば全体がリンクになったカードレイアウトなど)については、WordPressのcreate-blockという機能を利用して、自作のブロックとして登録することも可能です。
 
参考:create-block公式リファレンス
 
今回はcreate-blockについての説明は割愛します。

3. ブロクエディタを用いたサイト制作の注意点

3-1. ブロックエディタを想定したデザインを作る必要がある

ブロックエディタを用いたサイト制作で悩むポイントとして、「ブロック間の余白」があります。
テンプレートファイルに直接コーディングする場合、要素間の余白は都度CSSで調整できますが、ブロックエディタではページごとに余白を細かく調整することが、投稿・固定ページを編集するユーザーの負担になりがちです。
そのため、ブロックエディタを用いたサイト制作では、あらかじめ「見出し」や「画像」といったパーツ自体に余白を含めたデザインを定義しておくことで、編集しやすい設計にすることができます。

基本は上記のようにパーツ自体に余白をもたせる設計にして、どうしても対応できない余白のみ、スペーサーブロックなどで対応してもらうようにしましょう。

3-2. CSSの当て方に注意

ブロックエディタを用いたサイト制作では、クラス名にはWordPress標準のものが割り振られます。
テンプレートファイルに直接コーディングする場合、HTML要素ごとにクラス名を付与しますが、ブロックエディタではそのようには設計しません。
理由は、直コーディングとやっていることが変わらなくなってしまうのと、編集するユーザーの負担が大きくなってしまうためです。
クラス名は、「そのパーツを構成する最も親のブロック」のみに付与し、スタイルはCSS側で階層構造に応じて指定するようにしましょう。

また、その際に「確実にその要素だけにスタイルがあたる」記述をすることが重要です。
例えば、子要素だけにスタイルを当てれば十分な場合に、孫要素まで含めた指定をしてしまうと、他のパーツに意図しない影響がでることがあります。

3-3. 階層構造が複雑になり、コードの可読性が下がる

これは主に開発側の事情ですが、BEMやFLOCSSによるクラス指定と比べると、ブロックエディタでは階層をたどってスタイルをしていするケースが増えるため、純粋にコードの可読性が下がります。
FLOCSSでディレクトリ構造を整理する、適宜コメントアウトを残すなど、保守性を意識した実装を心がけることが重要です。

おわりに

いかがでしたでしょうか。今まではテンプレートファイルに直接コーディングすることが多かったのですが、ブロックエディタを使用した開発は、本来のCMSの機能を最大限活用した、とても効率的な方法だと感じました。特に、更新頻度が高いサイトや複数人で運用する場合に効果を発揮すると思います。
一方で、設計や運用ルールを考慮せずに導入すると、管理が煩雑になることもあります。サイトの目的や運用体制に合わせて設計することが、ブロックエディタを活かすポイントです。
本記事が、ブロックエディタを活用したサイト制作を検討する際の判断材料になれば幸いです。

【2025年】Visual Studio Codeのおすすめ拡張機能・プラグイン

Web制作の現場では、作業効率を上げながら品質を保つことが求められます。Visual Studio Code(以下、VS Code)は拡張機能・プラグインを活用することで、デザインとコーディングの両面を強力にサポートしてくれます。今回は、2025年現在の実務に役立つ厳選プラグインをご紹介します。

過去のおすすめ記事で紹介しているプラグインは除外しています。
参考:VS Code おすすめプラグイン紹介

1. HTML・CSSコーディング補助系

1-1. HTML CSS Support(vscode-html-css)

「HTML CSS Support」は、HTML内でCSSに定義されたクラス名・IDを自動補完してくれる拡張機能です。FLOCSSやBEMなど規則的な命名設計を採用している場合は特に効果が高く、タイプミスの防止やコーディング速度の向上に貢献します。

・CSS/SCSSファイルのクラス名をHTML内で自動サジェスト。
・複雑な命名規則のプロジェクトでも入力ミスを大きく減らせる。

1-2. htmltagwrap

「htmltagwrap」は、選択したテキストやコードをショートカットひとつで指定したHTMLタグで囲んでくれる拡張機能です。UI調整のためにタグを追加する際や、段落・強調などの装飾を施すときに非常に便利で、細かな編集作業の時間短縮に役立ちます。

・選択範囲をすぐにHTMLタグでラップできる。(例:p, div, span など)
・タグの打ち忘れや閉じタグミスを防止。

1-3. Path Intellisense

「Path Intellisense」は、HTML・CSS・JavaScriptなどでファイルパスを入力する際、候補を自動表示してくれる拡張機能です。パスのタイプミスや階層の迷子を防ぎ、作業スピードを大幅に向上させます。

・src=”” や href=””、import などでファイルパスを自動補完。
・ディレクトリ構造を覚えていなくてもスムーズに参照可能。

2. 品質管理・チェック系

2-1. Code Spell Checker

「Code Spell Checker」は、HTMLテキスト・コメント・class名などの英単語のスペルミスを検出する拡張機能です。誤字による修正コストを減らし、品質向上につながります。

・英単語のスペルミスを自動検知してサジェスト。
・class名やコメント、JSONなどコード内の文字列にも対応。

3. エディタの見やすさ・作業環境改善系

3-1. zenkaku

「zenkaku」は、ソースコード内に紛れた全角スペースを視覚的に強調表示してくれる拡張機能です。全角スペースはレイアウト崩れの原因になることも多いので、特に日本語環境では必須です。

・全角スペースを強調表示して、意図しない混入を防ぐ。
・入力時にすぐ気づけるため、デバッグ工数を削減できる。

3-2. Peacock

「Peacock」は、VS Codeのウィンドウカラーをワークスペース単位で変えられる拡張機能です。複数の案件を同時に開いたり、本番・開発環境を並行作業する際に、ウィンドウの色分けによって「どれがどのプロジェクトか」を判別しやすくなります。

・複数の案件を開いていても視覚的に判別しやすい。
・操作ミスを防止できる。

おわりに

今回はVS Codeのおすすめ拡張機能・プラグインを紹介しました。VS Codeのプラグインは、上手に組み合わせることで作業環境が大きく向上します。今回紹介したプラグインは、日々のコーディングを快適にし、ミスの削減にも役立つ定番ツールですので、ぜひ取り入れてみてください。

【Figma】バリアント機能の使い方を紹介【プロトタイプへの反映方法も】

デザインシステムを効率的に管理するうえで欠かせないのが、Figmaの「バリアント」機能です。バリアントは複数の状態(ホバー時、クリック時、非活性時など)をひとつのコンポーネントにまとめることで、デザインの一貫性を保ちつつ、更新・管理を大幅に効率化できます。
今回は、基本的な「バリアントの作り方」から「プロトタイプへの反映方法」までを、順を追って解説します。

1. バリアントとは

「バリアント(Variant)」とは、ひとつのコンポーネントに複数の状態やバリエーションを持たせるための仕組みです。例えばボタンを例にすると、以下のような「見た目が少し違うが、同じ役割を持つ要素」をまとめて管理できます。

状態
説明
Default
通常状態
Hover
マウスオーバー時
Active
クリック時
Disabled
無効状態

2. バリアントの作り方

2-1. コンポーネントを作成する

まずは、ベースとなるコンポーネントを作成します。
ボタンやトグルスイッチなど、状態を持つUIパーツが対象です。今回はシンプルなボタンで説明します。

【操作手順】

ボタンパーツを作ります。

作成したボタンを右クリック → 「コンポーネントを作成」 をクリックします。

そもそもコンポーネントが分からない!という方は、以前書いたコラムで紹介していますので、ご参照ください。
FigmaでUIデザインを始めよう!初心者向けガイド

2-2. バリアントを追加する

次に、作成したコンポーネントにバリアントを追加します。

【操作手順】

コンポーネントを選択した状態で右側のプロパティパネルの+ボタンから「バリアント」をクリック。

すると、ボタンが点線で囲われた状態になりました。この点線で囲われた状態が、バリアントが設定されている状態になります。この状態にすることで、複数デザインの差分を用意できるようになります。

2-3. 差分のデザインを作成する

それぞれのバリアントに応じたデザイン差分を作成します。
今回は説明をシンプルにするために、以下の2つの状態を設定します。
 
default(通常)
hover(ホバー時)
 

【操作手順】

点線で囲われた領域をクリックし、+ボタンをクリックします。

バリアントが追加され、そのバリアントが選択された状態になります。このボタンにはホバー時のデザインを適用したいので、塗りやテキストカラーをホバー時の色に変更しましょう。また、右側の「名前を変更」からわかりやすい名前に変更しておくと、デザインファイルが見やすくなります。

「default」と「hover」という名前にして、ホバー時の色は反転させました。左側のレイヤーパネルでも名前が変わっているのが確認できると思います。

また、点線で囲われた領域にも名前をつけることができます。初期値は「プロパティ」という名前でわかりにくいので、「state」という名前に変更しておきましょう。

3. 作成したバリアントを使用する

3-1. アセットからインスタンスを挿入する

バリアントが作成できたら、実際にデザイン内で使用してみます。

【操作手順】

左側の「アセット」タブを開き、作成したコンポーネントをキャンバスにドラッグ&ドロップします。

3-2. stateを切り替えてデザインが変わることを確認する

インスタンスを選択すると、右側パネルに「state」が表示されます。
プルダウンから「hover」を選択し、hover時のデザインに切り替わることを確認します。

4. プロトタイプへの反映方法

作成したホバー時のデザインは、実際にプロトタイプで動かすこともできます。以下にプロトタイプへの反映方法を紹介します。

4-1. アセットからインスタンスを挿入する

プロトタイプで動作を確認するために、別のアートボードを用意します。そこにstateがdefault(ホバー前のボタン)のインスタンスを配置してください。

4-2. 右側ナビゲーションで「プロトタイプ」を選択

元のアートボードに戻り、メインコンポーネントのstateがdefaultのボタンをクリック。右側のナビゲーションメニューのプロトタイプタブから「インタラクション」を選択します。

4-3. インタラクションを追加してアニメーションなどを設定

インタラクションで「マウスオーバーした時」に「stateがhover」のボタンに切り替わるように設定します。アニメーションや曲線、所要時間はお好きなものを設定いただいて構いません。

【設定の例】

トリガー:マウスオーバー
アクション:次に変更
state:hover
アニメーション:ディゾルブ
曲線:イーズアウト
所要時間:300ms

4-4. プロトタイプで確認

右上の「▶︎再生」ボタンをクリックし、実際の動作を確認します。
ホバーに応じてstateが切り替われば設定完了です。

おわりに

今回は、Figmaのバリアント機能を使って複数の状態をまとめる方法と、プロトタイプへの反映方法をご紹介しました。
バリアントは、デザインの管理を効率化できるだけでなく、クライアントにもあらかじめ実装イメージを共有することができ、実装後の手戻りを少なくできるといったメリットもあります。
是非この機会にバリアント機能を活用して、より効率的でわかりやすいデザイン管理を実践してみてください。

会員サイト構築におすすめ!ローコードプラットフォームSPIRALの紹介

Web制作案件ではコーポレートサイト以外にも、顧客向けの会員サイトやダウンロード専用ページなど、ユーザー限定コンテンツを設けたいという要望を受けることがあります。しかし、会員サイトの構築には「ログイン機能」や「会員情報管理」「メール配信」など多くの仕組みが必要で、開発コストも時間もかかってしまいます。そんな時におすすめしたいのが、ローコードで会員サイトを構築できるプラットフォーム「SPIRAL(スパイラル)」です。私自身、過去の案件で何度かSPIRALに触れる機会があり、その便利さを実感できたので、今回はSPIRALのおすすめポイントについて紹介したいと思います。

1. SPIRALとは


[ 公式サイト:https://spiral.pi-pe.co.jp/ ]

SPIRAL(スパイラル)は、スパイラル株式会社(旧・株式会社パイプドビッツ)が提供する国産のローコード開発プラットフォームです。プログラミングの知識がなくても、マウス操作で会員管理・フォーム・メール配信・データベース連携などを実現することができます。Web制作会社への支援体制も充実しており、「セキュアな会員サイトをスピーディに構築したい」という案件に最適なサービスです。

1-1. バージョンについて

現在は「SPIRAL ver.2」が提供されており、従来の「ver.1」から大幅に機能と使い勝手が向上しています。「ver.2」ではより自由なページデザインと柔軟なデータベース連携が可能になっています。(私が会員サイトを構築した時は「ver.2」を使用しました)

1-2. 料金について

SPIRALは月額制のライセンス料金で利用できます。基本プランはおおよそ月額5万円〜でユーザー数、サイト数、データベース数などによって料金が変動します。ただ、無料トライアルも用意されているため、初期導入前に操作感を試すことも可能です。

2. SPIRALのおすすめポイント

2-1. ローコードで作れる!


[ SPIRAL ver.2 デモ一覧:https://knowledge.spirers.jp/special/detail/2207 ]

SPIRALの最大の特長は、「ローコード」でシステム構築ができることです。様々な機能が必要とされる「会員サイト」の構築に関しても、プログラミングのコードを記述することはほぼありません。公式のマニュアルに沿って作業するだけで、基本的な会員サイト(お知らせやフォーム等)を構築することが可能です。
ただし、「データベース(DB)の構築に関してはサイトの運用方法を踏まえて設計する必要があるので、どのようなDB構成にするかはあらかじめ考えておく必要があります。

SPIRALで作成された会員サイトやお問い合わせフォームのデモが用意されているので、作りたいアプリがあれば一度確認してみると良いでしょう。

2-2.便利な機能が揃っている!

会員サイトに必要な機能が最初から揃っているのもSPIRALの強みです。例えば以下のような機能があります。

「ログインフィルタ」…会員情報のステータスやランクに応じた、コンテンツの表示分けが可能。
「条件抽出」…コンテンツが所持している情報(例:掲載日、価格など)による絞り込み表示が可能。
「メール配信」…会員にメールの一斉送信をすることができる。特定条件の会員に限定することも可。
「パスワード再設定」…会員サイトでは必須のパスワード再設定フォームも構築可能。
「トリガーアクション」…DBへの登録や更新時に自動処理を実行できる。(例:通知メールなど)

これらの機能を組み合わせることで、会員向けコンテンツ配信やセミナー申込管理など、柔軟な運用を実現できます。

2-3. マニュアルやサポートが充実!


[ ナレッジサイト:https://knowledge.spirers.jp/ ]

導入後のサポート体制も手厚く、公式ナレッジサイトでは、豊富なマニュアルやコードサンプルが公開されています。わからない点があっても、問い合わせフォームから専門スタッフに相談できるため、初心者でも安心です。Web制作会社にとっても、技術サポートを受けながら案件を進められるのは大きなメリットです。

2-4. セキュリティ対策も万全!

SPIRALは、金融業界や官公庁でも利用される高いセキュリティ基準を備えています。個人情報を扱うデータベースは暗号化され、アクセス権限の細かい設定も可能です。ISO27001(ISMS)やJIS Q 15001(プライバシーマーク)を取得しており、安心して顧客データを預けることができます。

おわりに

今回はローコードプラットフォームSPIRALについて紹介しました。SPIRALは、「スピーディに」「安全に」「柔軟に」会員サイトを構築できるローコードプラットフォームです。システム開発にかかる工数やコストを抑えつつ、クライアントの要望に合わせたサイトを提供したい制作会社にとって、非常に心強いツールといえます。会員サイト構築をご検討中の方は、ぜひ一度SPIRALの導入を検討してみてはいかがでしょうか。

失敗しないWeb制作会社の選び方

Web制作会社は数え切れないほど存在しており、その中から自社に合った会社を選ぶのは難しいかと思います。制作会社を間違えてしまうと、予算の浪費や納期の遅延、満足のいかない仕上がりにつながることもあります。
今回は、実際にWeb制作会社で働く立場から「失敗しないHP制作会社の選び方」を順序立ててご紹介します。ぜひ、このコラムをマニュアルとして制作会社選びに役立ててください。

1. 事前準備

ターゲット、目的、予算を決めておく

Webサイトの成功は、最初の準備段階でほとんど決まります。
まずは「誰に向けたサイトなのか(ターゲット)」「サイトを通して何を達成したいのか(目的)」「どれくらいの予算を投じられるのか」を明確にしておきましょう。

さらにもし余裕があれば、参考になるサイトをいくつかリストアップしておくと良いです。イメージを具体的に伝えやすくなり、制作会社側の理解度も高まります。もし難しければ、「柔らかい雰囲気」「力強い印象」「爽やかなデザイン」といった抽象的な言葉でも大丈夫です。

上記を社内で意思統一しておく

後から社内で意見の食い違いが起きる可能性があります。経営層・担当部署・実際の運用担当者など、関係者全員で方向性をすり合わせておくことが大切です。
ここでのズレが後の修正コストや時間ロスにつながるため、「社内合意をとってから制作会社に依頼する」ことを必ず意識しましょう。

2. 制作会社の種類と判断

「Web制作会社」と言っても実は種類がたくさんあります。そして制作会社によって得意分野は異なってきます。目的に応じて適切な会社を選ぶことが大切です。ここでは、Webサイトを作る目的に応じて、どのような制作会社を選ぶべきかの判断基準を解説していきます。

①企業や商品、ブランドのイメージを出したい場合

・ストーリーを生かしたコンテンツを制作できるか

・ブランドの統一感を意識したサイトを構築できるか

加えて、過去の制作実績を見て「その会社が手がけたサイトにブランドらしさや世界観が表現されているか」を確認すると良いです。単におしゃれなデザインではなく「企業の個性が伝わるか」が重要です。

②セキュリティ対策や機能性を重視したい場合

・開発に強いかどうか

・CMSを使用したサイトを構築できるか

特に個人情報を扱う場合や会員制サイトを検討している場合は、セキュリティへの知識・実装実績があるかを必ず確認するようにしましょう。自社に合わせたCMS選定や、保守・運用まで含めて提案できるかもポイントです。

③低コストでサイトを作りたい場合

・ノーコードツールやテンプレートを使用し、スピード感よく制作できるか

・コストを重視し最低限の機能でサイトを制作できるか

ただし「安さ」だけに注目すると失敗の原因になります。更新性や将来的な拡張性まで考えられているかを確認し、必要な機能を削ぎ落としつつも最低限の品質を担保できる会社を選びましょう。
こちらは打ち合わせの際に予算感まで詳しく伝えておくと良いと思います。

④集客率を増やしたい場合

・LPの制作が得意か

広告やSEOに強い会社であるかも判断基準になります。単にページを作るだけでなく、ユーザー導線やコンバージョン率の改善まで提案できる制作会社を選ぶと成果につながりやすいです。

3. 打ち合わせ前のチェック

・実績をHPに載せているか

制作会社のHPに実績があるかを確認してみてください。どのようなサイトを制作し、どこまで担当したのか(デザインのみ/開発まで/運用サポートありなど)を確認しましょう。可能であれば、自社の業界や目的に近い事例を探してみてください。
また、実績を確認するときは、デザインの見た目だけでなく「ユーザーにとって使いやすいか」にも注目しましょう。
【使いやすさの確認ポイント】

・申込みボタンや問い合わせ導線がわかりやすく配置されているか

・文字サイズや色のコントラストが読みやすいか

【デザイン性の確認ポイント】

・業界やターゲットに合った幅広いデザインができているか

・似たようなテイストばかりでなく、表現力の幅があるか

4. 打ち合わせの際にチェックすること

①見積もりの内訳を説明してくれるか

理解が難しい項目があった場合に、質問をしてみてください。一つの作業にどれくらい時間がかかるか等を丁寧に説明してもらえるかを確認しましょう。

②自社で更新しやすいWebサイトを提供してくれるか

こちらは前述の「Webサイトを作る目的」にもよりますが、もし自社で更新したいサイトを作りたい時には必須となります。
CMSの運用をわかりやすく対応できる仕組みを用意してくれるかを確認しましょう。

③無理なオプションをつけてこないか

ヒアリングを重ねた上で「今の段階で必要なもの」と「将来的に検討しても良いもの」を整理して提案してくれる会社を選びましょう。

おわりに

いかがでしたでしょうか?
Web制作会社はたくさんあって選定が難しいかと思います。ですが、最初こそ力を注いで目的にあった制作会社を見つけることができると、制作そのものがスムーズに進むだけでなく、公開後の集客や運用においても成果が期待できます。
この記事を参考にして、安心して任せられる制作会社を見つけてみてください。

【生成AI】Web制作に使えるのはどれ?テキスト生成AIを比較

Web制作において「ちょっとしたテキストが欲しい」という場面は少なくありません。ワイヤーフレーム用のダミーテキストや、ランディングページのキャッチコピー、フォームのエラーメッセージなど、本番ではライターやクライアントに用意してもらう内容でも、とりあえずデザインを進めるために必要になることがあります。そんなとき便利なのが、無料で使えるテキスト生成AIです。今回は代表的な4つのAIに同じプロンプトを投げ、Web制作での使い勝手を比較してみました。

1. 今回紹介するテキスト生成AI

比較対象に選んだのは以下の4つです。いずれも無料アカウント登録だけで利用可能です。

サービス名 概要 URL
ChatGPT バランス型。日本語も自然で幅広い用途に対応。 https://auth.openai.com/log-in-or-create-account
Google Gemini 調べものや最新情報に強い。文章はやや堅め。 https://gemini.google.com/app?hl=ja
Claude やさしい文体や要約が得意。読みやすい表現が特徴。 https://claude.ai/login?returnTo=%2F%3F
Perplexity 検索エンジン型。出典つき回答が多く、実務的な説明文に向く。 https://www.perplexity.ai/

なお、各生成AIのアカウント登録方法については割愛させていただきます。

2. 実際にプロンプトを投げて比較してみる

2-1. ワイヤーフレーム用ダミーテキストの生成

Web制作のワイヤーフレームに使うダミーテキストを生成してください。
・病院サイトのトップページを想定
・キャッチコピー(20文字程度)
・サブコピー(40文字程度)
・サービス紹介文(100文字程度)
日本語でお願いします。

生成結果

文章の生成に関しては、いずれのAIも十分に使用できるクオリティのものが出力されました。
文体やトーンには、それぞれ微妙な違いがある印象です。
 
【ChatGPT】読みやすく、内容がすっと入ってくる印象

 
【Gemini】患者に寄り添うような表現が多め

 
【Claude】やや硬いが読みやすい文章

 
【Perplexity】クセのない汎用的に使えそうな文章

2-2. 文章の要約

クライアントとのMTGで聞きたいことのメモ書きを投げるので、要約してMTGの時に見やすい形にしてください。
・トップページのキャッチコピー、現状「未来をつなぐテクノロジー」だが抽象的すぎる印象。業種が伝わりにくいので、もっと具体的にするか相談したい。 
・商品ページの写真、クライアント側で用意できるか?もし難しければ撮影手配をこちらで提案する必要あり。 
・サービス紹介のページ構成、文章量が多くて読みづらい。アコーディオン形式でまとめるか、図解を入れる案を出す。 
・会社概要ページ、代表あいさつ文が長い。重要部分だけ残して要約した方が読み手に伝わりやすい。 
・お問い合わせフォーム、必須項目が「名前・メール・電話番号・問い合わせ内容」で良いか確認したい。入力ハードルを下げたい。 
・サイト公開後の運用フロー:更新を社内で行うのか、それとも保守契約を希望するのかを確認。特に採用情報ページは更新頻度が高そう。 
・SEO対策の件、競合調査をしたら「地域名+サービス名」で上位表示している企業が多い。メタ情報と見出しを見直したい。 
・SNS連携、現状はTwitterだけだがInstagramも埋め込みたいとの声が出ていた。優先順位を確認。

【ChatGPT】不要な要素が削ぎ落とされ、見やすい印象

※画像は画面の都合上一部のみを抜粋しています。

 
【Gemini】まとまりがなく、少し見づらい印象

※画像は画面の都合上一部のみを抜粋しています。

 
【Claude】前情報に「要約が得意」とあったが、PDF形式で見やすくまとまっている。


※画像は画面の都合上一部のみを抜粋しています。

 
【Perplexity】こちらは無難に要約されていて、見やすい印象


※画像は画面の都合上一部のみを抜粋しています。

2-3. コード生成

レスポンシブ対応の2カラムレイアウトをCSSで記述してください。
条件:
・左カラムは幅70%、右カラムは幅30%
・スマホでは縦並びになる

【ChatGPT】Flexboxを用いたコードを生成。特に指示しない場合、HTMLファイル内にスタイルを記述する形で返ってきた。表示確認を行ったところ、gapが横に効いている影響で、PCで横並びになっていなかったため、手直しが必要。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>2カラムレスポンシブ</title>
<style>
  .container {
    display: flex;
    flex-wrap: wrap; /* スマホサイズで縦並びになるように */
    gap: 20px; /* カラム間の余白 */
  }

  .left {
    flex: 0 0 70%; /* 幅70% */
    background-color: #f0f0f0;
    padding: 20px;
    box-sizing: border-box;
  }

  .right {
    flex: 0 0 30%; /* 幅30% */
    background-color: #d0d0d0;
    padding: 20px;
    box-sizing: border-box;
  }

  /* スマホ対応 */
  @media (max-width: 768px) {
    .left, .right {
      flex: 0 0 100%; /* 幅100%で縦並び */
    }
  }
</style>
</head>
<body>

<div class="container">
  <div class="left">
    <h2>左カラム</h2>
    <p>ここに左カラムの内容を入れます。</p>
  </div>
  <div class="right">
    <h2>右カラム</h2>
    <p>ここに右カラムの内容を入れます。</p>
  </div>
</div>

</body>
</html>

 
【Gemini】こちらも問題ない品質のコードを出力。表示も問題なし。色も付いているが、コメントがあるので編集して問題ないことがわかる。

<div class="container">
  <div class="left-column">
    <h2>左カラム</h2>
    <p>このカラムの幅は70%です。スマホでは上部に表示されます。</p>
  </div>
  <div class="right-column">
    <h2>右カラム</h2>
    <p>このカラムの幅は30%です。スマホでは下部に表示されます。</p>
  </div>
</div>
.container {
  display: flex;
  flex-wrap: wrap; /* カラムの折り返しを有効にする */
}

.left-column {
  width: 70%;
  background-color: #e6f7ff; /* 背景色はお好みで */
  padding: 20px;
  box-sizing: border-box; /* パディングを含めて幅を計算 */
}

.right-column {
  width: 30%;
  background-color: #fff0e6; /* 背景色はお好みで */
  padding: 20px;
  box-sizing: border-box;
}

/* 768px以下のビューポートで適用されるスタイル */
@media (max-width: 768px) {
  .left-column,
  .right-column {
    width: 100%; /* 幅を100%にして縦に並べる */
  }
}

 
【Claude】一部デバイスサイズで、右のアイテムが見切れてしまった。また、要素の角丸やリストなど、場合によっては不要な装飾も。

<div class="container">
  <div class="left-column">
    <h2>左カラム(70%)</h2>
    <p>メインコンテンツがここに入ります。デスクトップでは全体の70%の幅を占め、スマホでは上段に配置されます。</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
  </div>
  
  <div class="right-column">
    <h3>右カラム(30%)</h3>
    <p>サイドバーコンテンツがここに入ります。デスクトップでは全体の30%の幅を占め、スマホでは下段に配置されます。</p>
    <ul>
      <li>メニュー項目1</li>
      <li>メニュー項目2</li>
      <li>メニュー項目3</li>
    </ul>
  </div>
</div>
.container {
  display: flex;
  gap: 20px;
  max-width: 1200px;
  margin: 0 auto;
  padding: 20px;
}

.left-column {
  flex: 0 0 70%;
  background-color: #f5f5f5;
  padding: 20px;
  border-radius: 8px;
}

.right-column {
  flex: 0 0 30%;
  background-color: #e8e8e8;
  padding: 20px;
  border-radius: 8px;
}

/* スマホ対応(768px以下で縦並びに変更) */
@media (max-width: 768px) {
  .container {
    flex-direction: column;
  }
  
  .left-column,
  .right-column {
    flex: 1 1 auto;
    width: 100%;
  }
}

 
【Perplexity】必要最低限のコードで、指示した要件は盛り込んでいる。ただ、背景色がないため、どこまでが要素なのかひと目でわかりづらい。

<div class="responsive-container">
  <div class="responsive-left">
    左カラム(幅70%)
  </div>
  <div class="responsive-right">
    右カラム(幅30%)
  </div>
</div>
.responsive-container {
  display: flex;
  flex-wrap: wrap;
}

.responsive-left {
  flex: 0 0 70%;
  max-width: 70%;
}

.responsive-right {
  flex: 0 0 30%;
  max-width: 30%;
}

@media (max-width: 768px) {
  .responsive-left,
  .responsive-right {
    flex: 0 0 100%;
    max-width: 100%;
  }
}

3. 検証結果

今回の比較で見えてきた特徴をまとめると以下の通りです。

ChatGPT文章生成の部分では、求めているニュアンスのものが出やすい印象。コード生成については、一部手直しが必要だったが、十分使える精度。
Gemini文章の要約では若干整理されていない印象を受けた。コード生成に関しては適宜コメントを入れて出力してくれる。
Claude文章の要約が得意。適宜PDF出力を併用してくれるので、ログが長くなりすぎない。コードについては余計なものも多く、求めているのを出すにはプロンプトの工夫が必要。
Perplexityテキスト生成も要約も問題ない性能。コードは入力内容に忠実で正確だが、柔軟さにはやや欠ける印象。

要約ならClaude、汎用的な用途ならChatGPT、根拠を明確に示したい場合Perplexity、といった具合に選ぶと効果的だと思いました。
ただ、今回はコラムという都合上、シンプルなプロンプトしか試していません。より複雑なプロンプトを投げた時に、初めてそれぞれの生成AIの性能差や特徴の差が出ると思いますので、是非色々なプロンプトを試してみてください。

おわりに

いかがでしたでしょうか?いずれの生成AIも十分に使えるクオリティの文章やコードを生成してくれますが、それぞれ得意分野に違いがあるという印象でした。テキスト生成AIは「最終的な原稿やコードを丸ごと任せる」よりも、Web制作の下準備や補助として活用するのに適しています。ダミーテキストを埋める、キャッチコピーの方向性を探る、簡単なコードを試すといった場面でAIをうまく使うと、作業スピードがぐっと上がります。ぜひ今回の比較を参考に、Web制作業務にAIを取り入れてみてください。

【WordPress】知っておきたいWordPress標準のエクスポート機能について

WordPressサイトの引っ越しやバックアップといえば、「All-in-One WP Migration」や「WPvivid」といったプラグインを思い浮かべる人が多いと思います。大規模な移行や完全なコピーを行う際には、これらのプラグインはとても便利です。しかし、実はWordPressには標準機能として「エクスポート機能」が備わっています。最初からプラグインを使用していると、意外と知らなかったり一度も使ったことがない方もいるのではないでしょうか?
今回は小規模な改修や一部データの移行におすすめの標準エクスポート機能について紹介します。

1. エクスポート機能について



標準のエクスポート機能はWordPress管理画面の「ツール」→「エクスポート」から利用することができます。ここから記事データをXMLファイルとして出力し、別のWordPress環境にインポートすることができます。エクスポートの対象は以下のように細かく選択できます。

投稿 … 特定のカテゴリー、投稿者、開始日時、ステータスでの絞り込みが可能
固定ページ … 特定の投稿者、開始日時、ステータスでの絞り込みが可能
メディア … 期間を指定しての絞り込みが可能

1-1. インポートについて



エクスポートしたデータは、移行先のWordPressで「インポート」機能を使って取り込むことができます。ただし、インポートの初回利用時は「WordPressインポートツール」をインストールする必要があるので、WordPressの欄の「今すぐインストール」をクリックしましょう。



インストールが完了すると「インポーターの実行」にテキストが切り替わるので、そちらをクリックするとインポート画面に遷移します。エクスポートしたXMLファイルをアップロードすると、投稿や固定ページが新しい環境に反映されます。また、インポート時にはいくつかのポイントがあります。

投稿者の割り当て … 記事に紐づく投稿者情報を、既存ユーザーに割り当てるか、新しくユーザーを作成するか選べます。
メディアの取り込み … オプションとして、エクスポート元サイトから画像を自動取得してインポート先にコピーすることも可能です。ただし、環境によっては正常に動作しない場合もあるので、必要に応じて手動でアップロードする方が確実です。

1-2. 標準エクスポートの注意点

・XMLファイルとして出力されるため、画像ファイルそのものは含まれません。メディアにアップロードしたファイルに関しては別途移行が必要です。
・サイト全体の移行やテーマ・プラグインの設定まではカバーすることはできません。
・投稿記事数が多いサイトでは、処理が重くなることもあります。

2. カスタム投稿のエクスポート

WordPressサイトでは「Custom Post Type UI」プラグインを利用して、カスタム投稿やカスタムタクソノミーをほぼ必須で使用しているケースも多いかと思います。これらについてもプラグイン標準のエクスポート、インポートが用意されているため、簡単にデータ移行することができます。



「CPT UI」のエクスポートは「ツール」から利用することができます。
カスタム投稿をエクスポートする場合は、「投稿タイプ」タブの「Export Post Types 設定」のコードをコピーするだけです。インポートする際は移行先のWordPressで「投稿タイプをインポート」欄にコードをペーストし、「インポート」ボタンをクリックして完了です。



カスタムタクソノミーのエクスポートも全く同じ手順となります。「タクソノミー」タブでコードをコピーして、移行先のWordPressにペーストし「インポート」ボタンをクリックして完了です。

3. おすすめの利用シーン

サイト移行や改修というと、どうしても「プラグインを使って丸ごとコピー」という発想になりがちです。しかし、ちょっとしたケースでは逆にプラグインの方が大掛かりになってしまうことがあります。以下のようなケースでは、標準のエクスポート機能を使う方が負担が軽くておすすめです。

・テスト環境で追加した固定ページだけを本番環境に反映したい。
・カスタム投稿タイプを新たに追加したので、本番環境に反映したい。
・特定カテゴリーの記事だけを別のサイトに移したい。

おわりに

今回はWordPress標準のエクスポート機能について紹介しました。標準エクスポート機能は普段はあまり使われていないものの、小回りが利く便利なツールです。小規模改修や部分移行には標準機能、大規模なサイト移行には専用プラグインと使い分けるのがおすすめです。これまでプラグインを使ったことがなかったという方は、ぜひ一度試してみてはいかがでしょうか?

【初心者向け】LP作成時のポイントと基本

LP(ランディングページ)を作成した経験がまだ少ない方にとって、「何から始めればいいのか」「どんなポイントに気をつければ効果的なページになるのか」が分かりにくいと感じることもあるかと思います。

そこで今回は、LP制作における基本的な考え方から、実際に制作する際の注意点まで、初心者の方にもわかりやすくまとめました。これからLPを作る方や、今よりもっと効果的なLPを目指したい方の参考になれば幸いです。

1. LPとはなんなのか

LP(ランディングページ)とは、ユーザーが広告や検索結果などをクリックした際に最初に訪れる“専用ページ”のことです。商品の購入や資料請求、予約など、ひとつの目的(コンバージョン)に特化して設計されているのが特徴です。
通常のWebページとは違い、余計なリンクや情報を省き、「この行動をしてもらう」ことに集中したページです。
つまり、LP制作では、ユーザーを誘導するための構成が重要になってきます。
初心者の方は、まずは事例集のサイトを見てイメージを掴むのもおすすめです。
[ SANKOU!Webデザイン制作の参考になる国内のステキなサイト集 ]

2. LPのゴールを明確にする

まず大切なのは、このLPで何を達成したいのかをはっきりさせることです。購入なのか、登録なのか、問い合わせなのか。目的が明確であればあるほど、伝える内容や導線もブレません。

3. ターゲットを具体的にイメージする

このページは誰に向けたものなのか?ターゲットが変われば、伝え方も変わります。だからこそ、ペルソナを設定して、その人の目線で考えることが大切です。

ターゲットに合わせて変更すべき主要な点

・配色


左の配色は、若者向けの飲料水やスポーツ用品などが連想され、左の配色では、大人の男性のスーツや時計などの商品が連想されます。

・フォント、文字サイズ(文字間)


フォントと、文字間、太さを変えてみました。左の文字はゆったりとした優しい印象を受け、右の文字では力強くスピード感がある印象です。

・写真、イラストのテイスト


左のイラストは、よりイラストチックなものになっており、朗らかな印象です。右のイラストは細部まで写実的に描かれており、より真面目な印象を受けます。

4. ファーストビューで離脱させない

ページを開いた瞬間、「自分に関係ある」と思ってもらえるかが勝負です。商品名やベネフィット、CTAなど、伝えるべき情報はファーストビューでしっかり伝えましょう。
キャッチコピーはなるべく端的でわかりやすいものを選びましょう。また、文字のサイズや太さ、色に着目して、情報に優劣を持たせることがコツとなります。

5. 「読みやすさ」より「伝わりやすさ」

説明を丁寧にするよりも、端的に伝えることを意識しましょう。長文よりも、短く・見出しや箇条書きで整理された情報の方が、読み手にスッと届きます。
before afterの画像では、文字サイズを変更しただけですが、この商品が何を訴求しているのかが一目で伝わってきます。

6. ユーザーの疑問・不安を先回りして解消する

「本当に効果ある?」「高くない?」というような不安は、レビューやQ&A、保証などを活用してあらかじめ解消しておきましょう。信頼感につながります。
下記のように、ピンタレストにはたくさんの事例が載っているので、ぜひ参考にしてみてください。
[ Pinterest – レビューデザイン例 ]
[ Pinterest – 保証デザイン例 ]

7. スマホでの見やすさは必須

今や多くのユーザーはスマホでLPを見ています。画面サイズや操作性、文字の読みやすさなど、スマホ前提での設計が必要不可欠です。

要素 最低サイズ 推奨サイズ(視認性重視)
本文(p) 14px 16px〜18px
見出し(h2〜h3) 18px 20px〜24px
ボタンテキスト(CTA) 14px 16px〜18px
ナビゲーション・リンク 14px 14px〜16px

おわりに

いかがでしょうか。LPでは、限られたスペースの中でいかに情報を精査し、「伝えるべきことを的確に伝えるか」が非常に重要になってきます。そのためには、まずページのゴールを明確に設定し、誰に向けて何を届けたいのか、ターゲット像をしっかり描くことが欠かせません。

伝えたいことが多すぎて整理できなかったり、構成に迷ってしまう時は、一度立ち止まって「このLPで本当に伝えたいことは何か?」を見つめ直すのがおすすめです。

LP制作で壁にぶつかったときには、ぜひこのコラムの内容を参考にしてみてください。

【WordPress】絞り込み検索を行う方法を解説【プラグインなし】

WordPressで求人情報や商品一覧などを掲載する際、ユーザーが希望条件に合った情報を素早く見つけられるよう「絞り込み検索」の機能が求められることがあります。
この記事では、プラグインを使わずに、複数条件での絞り込み検索を実装する方法を紹介します。対象読者は、WordPressでのカスタマイズにある程度慣れている方向けです。
それでは、早速基本的な実装ステップを見ていきましょう。

1. 完成イメージ

完成イメージは以下のとおりです。

必要最低限のスタイルのみ当てています。
求人一覧画面で、初期表示はすべての求人が表示されます。
任意の項目をチェックした後に、「検索」を押下すると条件に合致する求人のみが表示れます。

2. 実装手順

2-1. カスタム投稿タイプと分類項目(タクソノミー)を定義する

まずは、求人情報などを投稿するためのカスタム投稿タイプ「job」を登録します。あわせて、「勤務地」「職種」「雇用形態」といった検索条件となるカスタムタクソノミーを用意します。
以下をfunctions.phpに記述してください。


/* ==========================================================
// カスタム投稿タイプとタクソノミーの追加
========================================================== */
// カスタム投稿タイプ「job」
function register_job_post_type() {
    register_post_type('job', [
        'label' => '求人',
        'public' => true,
        'has_archive' => true,
        'supports' => ['title', 'editor'],
        'rewrite' => ['slug' => 'jobs'],
    ]);
}
add_action('init', 'register_job_post_type');
// タクソノミー「勤務地」
register_taxonomy('job_location', 'job', [
    'label' => '勤務地',
    'hierarchical' => true,
    'public' => true,
]);
// タクソノミー「職種」
register_taxonomy('job_category', 'job', [
    'label' => '職種',
    'hierarchical' => true,
    'public' => true,
]);
// タクソノミー「雇用形態」
register_taxonomy('employment_type', 'job', [
    'label' => '雇用形態',
    'hierarchical' => true,
    'public' => true,
]);

投稿タイプやタクソノミーは作成したい投稿内容に合わせて適宜調整してください。

2-2. 検索機能を追加する

続いて検索機能を追加します。
検索機能は、WordPressで投稿データを読み込む直前に実行することができる「pre_get_posts」というアクションフックを使用することで実現できます。
以下のコードをfunctions.phpに記述してください。


/* ==========================================================
// 検索機能
========================================================== */
function filter_job_search_query($query) {
  if (!is_admin() && $query->is_main_query() && is_post_type_archive('job')) {

    $tax_query = ['relation' => 'AND'];

    // 勤務地
    if (!empty($_GET['job_location'])) {
      $tax_query[] = [
        'taxonomy' => 'job_location',
        'field' => 'slug',
        'terms' => [sanitize_text_field($_GET['job_location'])], // 配列にする
      ];
    }

    // 職種(複数チェック対応)
    if (!empty($_GET['job_category'])) {
      $tax_query[] = [
        'taxonomy' => 'job_category',
        'field' => 'slug',
        'terms' => array_map('sanitize_text_field', $_GET['job_category']),
        'operator' => 'IN',
      ];
    }

    // 雇用形態(複数チェック対応)
    if (!empty($_GET['employment_type'])) {
      $tax_query[] = [
        'taxonomy' => 'employment_type',
        'field' => 'slug',
        'terms' => array_map('sanitize_text_field', $_GET['employment_type']),
        'operator' => 'IN',
      ];
    }

    // tax_queryがあればセット
    if (!empty($tax_query)) {
      $query->set('tax_query', $tax_query);
    }

    // フリーワード
    if (isset($_GET['s']) && $_GET['s'] !== '') {
    $query->set('s', sanitize_text_field($_GET['s']));
    }
  }
}
add_action('pre_get_posts', 'filter_job_search_query');

それぞれの処理は、「その値が設定されていれば」というif文で分岐しているので、何も値が設定されていなければ、投稿データが全件表示されます。

2-3. 絞り込み検索用のテンプレートを作成する

次に、検索フォームと検索結果を表示するテンプレートファイルを作成します。
 
■検索フォーム
今回は「template-parts」というフォルダの中に、job-search-form.phpというフォーム用のテンプレートパーツを作成します。


<form method="get" action="<?php echo get_post_type_archive_link('job'); ?>">
  <div class="form__inner">
    <input type="text" name="s" placeholder="フリーワード" value="<?php echo get_search_query(); ?>">
  
    <!-- 勤務地 -->
    <select name="job_location">
      <option value="">勤務地を選択</option>
      <?php
      $locations = get_terms('job_location');
      foreach ($locations as $loc) {
        echo '<option value="' . esc_attr($loc->slug) . '">' . esc_html($loc->name) . '</option>';
      }
      ?>
    </select>
  
    <!-- 職種 -->
    <div>
      <h2>職種</h2>
      <?php
      $categories = get_terms('job_category');
      foreach ($categories as $cat) {
        echo '<label><input type="checkbox" name="job_category[]" value="' . esc_attr($cat->slug) . '"> ' . esc_html($cat->name) . '</label>';
      }
      ?>
    </div>
  
    <!-- 雇用形態 -->
    <div>
      <h2>雇用形態</h2>
      <?php
      $types = get_terms('employment_type');
      foreach ($types as $type) {
        echo '<label><input type="checkbox" name="employment_type[]" value="' . esc_attr($type->slug) . '"> ' . esc_html($type->name) . '</label>';
      }
      ?>
    </div>
  
    <button type="submit">検索する</button>
    <a href="<?php echo get_post_type_archive_link('job'); ?>">クリアする</a>
  </div>
</form>

ここでのポイントは、formタグのmethodにgetを、actionに求人一覧画面のURLを設定している点です。
これにより、求人一覧画面のURLの末尾に、検索条件データを追加して送ることが可能になります。
 
■検索結果を表示するテンプレート
最後に、求人一覧を表示するテンプレートを作成します。
カスタム投稿タイプ「job」を追加したので、「archive-job.php」ファイルを作成します。


<main id="content" role="main">
  <h1 class="h1">求人一覧</h1>

  <?php get_template_part('template-parts/job-search-form'); ?>

  <?php if (have_posts()) : ?>
    <ul class="job-list">
      <?php while (have_posts()) : the_post(); ?>
        <li class="job-item">
          <a href="<?php the_permalink(); ?>">
            
            <div class="title-area">
              <h2><?php the_title(); ?></h2>
              <div class="job-meta">
                <!-- 勤務地 -->
                <p>
                  <strong>勤務地:</strong>
                  <?php
                  $terms = get_the_terms(get_the_ID(), 'job_location');
                  if ($terms && !is_wp_error($terms)) {
                    echo esc_html($terms[0]->name); // 1つだけ表示
                  }
                  ?>
                </p>
  
                <!-- 職種 -->
                <p>
                  <strong>職種:</strong>
                  <?php
                  $terms = get_the_terms(get_the_ID(), 'job_category');
                  if ($terms && !is_wp_error($terms)) {
                    echo esc_html(implode(', ', wp_list_pluck($terms, 'name')));
                  }
                  ?>
                </p>
  
                <!-- 雇用形態 -->
                <p>
                  <strong>雇用形態:</strong>
                  <?php
                  $terms = get_the_terms(get_the_ID(), 'employment_type');
                  if ($terms && !is_wp_error($terms)) {
                    echo esc_html(implode(', ', wp_list_pluck($terms, 'name')));
                  }
                  ?>
                </p>
              </div>
            </div>

            <!-- 抜粋 -->
            <div class="job-excerpt">
              <?php the_excerpt(); ?>
            </div>
          </a>
        </li>
      <?php endwhile; ?>
    </ul>

    <!-- ページネーション -->
    <div class="pagination">
      <?php the_posts_pagination(); ?>
    </div>

  <?php else : ?>
    <p>該当する求人が見つかりませんでした。</p>
  <?php endif; ?>
</main>

検索フォームの部分は、直前で作成した検索フォームをget_template_partで読み込みます。
また、「2-2. 検索機能を追加する」で、すでに記事読み込み直前に検索機能が実行されるようになっていますので、このテンプレートファイル側では条件分岐などを意識する必要はありません。

2-4. フロントで動作を確認する

最後にフロント側で動作を確認してみましょう。
任意のチェックボックスを選択し、検索ボタンを押下すると対象の求人のみが表示されるはずです。

おわりに

いかがでしたでしょうか?
少しコード量が多く感じられたかもしれませんが、カスタム投稿タイプやカスタムタクソノミーの追加にプラグインを使えば、もう少しスッキリさせることも可能です。
ただ、プラグインを使わずにphpのみで完結することで、裏側の処理が明確になり、後々タクソノミーの追加や検索条件のカスタマイズが柔軟にできるようになるというメリットもあります。
記事の検索機能はサイト制作で求められることも多いので、是非この機械にお試しください。