Googleドキュメントのスプレッドシートから動的にコンテンツを生成するWordPress用のプラグインを書いています。具体的には、プラグインは見栄えの良いスタッフリストを生成するショートコードを提供します。うまくいきますが、2つの問題があります。
最初の問題はある程度のキャッシュで解決できますが、2番目の問題についてはどうすればよいですか。最初の問題は、WordPressがキャッシュされたページのコピーにインデックスを付けるというのが理想的な解決策であると思うためです。
私が考えることができるもう一つの解決策は定期的にプラグインによって構成されたページのコンテンツを持つことでしょう。そうすれば、ページを検索でき、毎回動的にページが生成されることはありません。しかし、ページのコンテンツを完全に制御することはプラグインにとっては奇妙なパラダイムのように思えます...これを行う他のプラグインはありますか?また、この方法では、ユーザーに複雑さを感じさせることはないはずです。 (彼らは通常の場所の代わりにプラグインページからページのコンテンツを編集しなければならないでしょう。)
これは、ページのマークアップのどの部分がどのように見えるかの例です。
<h2>General Management</h2>
[staff-directory department="General Management"]
ヒットするスプレッドシートは別に設定されています。 「部署」はワークシートを指定します。 (結果がどのように見えるかをお見せしますが、画像を投稿するのに十分な担当者がいません。)
あなたの提案は大歓迎です。
wp_posts
テーブルには、高価な投稿コンテンツフィルタをキャッシュするために プラグインが使用できるpost_content_filtered
列があります 。その考えは、あなたがページを表示するとき、あなたはpost_content
を読まないが、あなたはpost_content_filtered
を読むということです。これはいい方法ですが、WordPressはデフォルトでpost_content
とpost_title
しか見ないので、検索の問題を解決することはできません。
ただし、その逆も可能です。エディタのコンテンツをpost_content_filtered
に、レンダリングされたページをpost_content
に格納します(cronジョブを使用して定期的に更新します)。投稿が編集される前に呼び出されるフィルタがあります。それらを使用して、エディタにpost_content_filtered
の代わりにpost_content
を渡すことができます。そのため、ユーザーに違いはありませんが、パフォーマンスと検索エクスペリエンスは向上します。
私は二つの方法を見ます
スピードが重要な場合は、キャッシュするよりも両方の問題が解決します。もしあなたがどういうわけか最後の変更のタイムスタンプをキャッシュとデータ検索のurl/getに追加することができれば、単純なハッシュアルゴリズムであなたはキャッシュされたバージョンが最新であることを確信することができます。
速度がそれほど重要ではない場合は、APIを使用してスプレッドシートを要求できます。たとえば、PHPは必要ないかもしれませんが、この例では データの検索のように(== --- ==)、検索にJavaScriptとJSONを使用できます 。
あなたの代わりに、Google Docsが検索クエリの瞬間に利用できないかどうかを計算して、データをキャッシュすることに固執するでしょう。