Categories
SupabaseWordPress
この記事はSupabase Advent Calendar 2024の19日目の内容で、ランダムに記事を取得する仕組みの作り方について紹介しています。SupabaseでViewを作成し、Supabase.jsを使用してデータを取得する方法が解説されています。WordPressのAPIも使用可能で、SupabaseのDBに記事情報があればWordPressのAPIを省略できます。Supabaseを選んだ理由やAI生成記事への適用についても触れられています。手を動かして実践することの重要性も強調されています。
LLMWordPress
生成系AIを使って技術記事を作成し、NotionやWordPressに組み込む方法が記載されています。WordPressに記事を取り込む際はMarkdown形式で生成し、必要に応じてブロックに内容を割り当てます。WordPressのブロックエディターを使用して生成結果をペーストし、編集作業を行うことで、編集しやすい記事にすることができます。記事を編集しやすくするため、ブロックを使用する方法が紹介されています。
WordPress
WordCamp Kansai 2024を運営中に、決済エラーの問題に遭遇。Stripeのmetadata処理に関する不具合を発見し、修正に挑戦。エラーの原因はmetadataの値にオブジェクトが含まれることで、keyの置換で解決。修正パッチをPull requestで送信し、コミュニティに貢献。WordCampのコード修正を経験し、今後も関わりたいと考えている。WordPressのコミュニティ活動が成長に繋がる良い経験となった。
WordPressの記事情報をWP APIで取得する際、「101件以上のデータを取得する方法」が重要。長期運用や大規模サイトでは101件目以降の情報取得が必要。再帰処理やレスポンスヘッダーのLinkを利用して効率的に実装可能。APIを再帰的に呼び出すことで、クエリ文字列の維持も可能。WP APIの追加情報を活用して、バッチ処理やHeadless化を効率化。
最近、WordCampのソースコードを触り、決済フォーム周りのスパム対策やスコア処理について勉強中。ローカルで意図的にエラーを発生させたい場合は、スパム判定回避としてget_score_for_ip_address関数を編集し、常に0を返すようにする方法がある。本番環境でスパム誤判定を避けるためには、Transient APIに保存されたデータが消えるのを待つしかない。操作に注意して開発を進めよう。
以前に_fieldsクエリと組み合わせて、WP APIレスポンスを最小限に抑える方法を紹介した。今回は、_embedクエリを使って情報をフィルターする方法について説明した。_embedクエリを使用すると、関連情報も取得できるが、特定の情報を抽出したい場合は_fieldsで指定が必要。_embedと_fieldsを組み合わせる際は、書き方に注意が必要。サンプルでは、authorの情報を埋め込みつつ、取得内容を絞っている。
WordPressコミュニティのカンファレンス、WordCampのウェブサイトはWordPressで作られています。GitHubに公開されているソースコードを利用し、ローカル環境で立ち上げる際にはいくつかのエラーに遭遇することがあります。プラグインや設定ファイルの配置に関する手順や注意点を記録しておき、問題が発生した際にはSlackなどでコミュニティと協力して解決していくことが大切です。
WordPressのREST APIは/wp-jsonから始まるパスで提供されており、独自のAPIを追加して外部サービスと連携する方法を紹介しています。rest_api_initフックでregister_rest_routeを使用し、プラグインコードを追加するとAPIが追加されます。第一・第二引数で指定したパスでAPIにアクセスすることができ、APIの情報は自動的に登録されます。また、正規表現を使用してパスに商品や店舗のIDなどを渡すこともできます。さらに、バリデーション処理を追加することで、リクエスト内容のバリデーションとエラーメッセージの表示が可能です。最後に、WordPressのREST APIを活用することで、ブロック開発に役立つことも紹介されています。
レイアウト系や認証エリアなどの機能を備えたブロックを作成する場合、InnerBlocksを使用する必要があります。InnerBlocksを編集画面に配置し、コードをビルドすると、ブロックの中にブロックを配置できるようになります。保存時にもInnerBlocksに対応し、配置した子ブロックも保存されます。また、allowedBlocksを使用して追加できる子ブロックの種類を制限したり、templateを使用して子ブロックの初期配置をカスタマイズすることもできます。詳細は参考記事をご覧ください。
WP APIを使ってWordPress内の記事データをREST形式のAPIリクエストで取得できます。レスポンスカスタマイズ方法として、_fieldsパラメータを使用する方法や、register_rest_field関数を使用してカスタムなデータを追加する方法が紹介されています。ただし、デフォルトで提供されているAPIのレスポンス内容を減らすことは非推奨であり、注意が必要です。カスタムフィールドの情報を含める場合には、get_post_meta関数と組み合わせることができます。また、追加したフィールドには_fieldクエリを使用して必要なデータのみを取得することもできます。