web-dev-qa-db-ja.com

WordPressで動的に生成されたコンテンツを検索可能にする方法

Googleドキュメントのスプレッドシートから動的にコンテンツを生成するWordPress用のプラグインを書いています。具体的には、プラグインは見栄えの良いスタッフリストを生成するショートコードを提供します。うまくいきますが、2つの問題があります。

  1. ショートコードを使用するページは、他のサーバーに対して複数のリクエストを行う必要があるため、読み込みが少し遅くなります。
  2. コンテンツはページが読み込まれたときに生成されるため、スタッフリストのコンテンツはサイトの検索結果に表示されません。

最初の問題はある程度のキャッシュで解決できますが、2番目の問題についてはどうすればよいですか。最初の問題は、WordPressがキャッシュされたページのコピーにインデックスを付けるというのが理想的な解決策であると思うためです。

私が考えることができるもう一つの解決策は定期的にプラグインによって構成されたページのコンテンツを持つことでしょう。そうすれば、ページを検索でき、毎回動的にページが生成されることはありません。しかし、ページのコンテンツを完全に制御することはプラグインにとっては奇妙なパラダイムのように思えます...これを行う他のプラグインはありますか?また、この方法では、ユーザーに複雑さを感じさせることはないはずです。 (彼らは通常の場所の代わりにプラグインページからページのコンテンツを編集しなければならないでしょう。)

これは、ページのマークアップのどの部分がどのように見えるかの例です。

<h2>General Management</h2>

[staff-directory department="General Management"]

ヒットするスプレッドシートは別に設定されています。 「部署」はワークシートを指定します。 (結果がどのように見えるかをお見せしますが、画像を投稿するのに十分な担当者がいません。)

あなたの提案は大歓迎です。

5
Doug Paul

wp_postsテーブルには、高価な投稿コンテンツフィルタをキャッシュするために プラグインが使用できるpost_content_filtered列があります 。その考えは、あなたがページを表示するとき、あなたはpost_contentを読まないが、あなたはpost_content_filteredを読むということです。これはいい方法ですが、WordPressはデフォルトでpost_contentpost_titleしか見ないので、検索の問題を解決することはできません。

ただし、その逆も可能です。エディタのコンテンツをpost_content_filteredに、レンダリングされたページをpost_contentに格納します(cronジョブを使用して定期的に更新します)。投稿が編集される前に呼び出されるフィルタがあります。それらを使用して、エディタにpost_content_filteredの代わりにpost_contentを渡すことができます。そのため、ユーザーに違いはありませんが、パフォーマンスと検索エクスペリエンスは向上します。

1
Jan Fabry

私は二つの方法を見ます

スピードが重要な場合は、キャッシュするよりも両方の問題が解決します。もしあなたがどういうわけか最後の変更のタイムスタンプをキャッシュとデータ検索のurl/getに追加することができれば、単純なハッシュアルゴリズムであなたはキャッシュされたバージョンが最新であることを確信することができます。

速度がそれほど重要ではない場合は、APIを使用してスプレッドシートを要求できます。たとえば、PHPは必要ないかもしれませんが、この例では データの検索のように(== --- ==)、検索にJavaScriptとJSONを使用できます

あなたの代わりに、Google Docsが検索クエリの瞬間に利用できないかどうかを計算して、データをキャッシュすることに固執するでしょう。

0
petermolnar