web-dev-qa-db-ja.com

パーマリンクを生成するときのwp_get_object_terms()の呼び出しを減らす/最適化する

私のテーマは、表示するために投稿用語を必要としないループを実行します。ただし、Wordpressコアは繰り返しごとにwp_get_object_terms関数を実行します。

これにより、次のような不要なDBクエリが発生します。

SELECT t.*, tt.*
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt
ON tt.term_id = t.term_id
INNER JOIN wp_term_relationships AS tr
ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy IN ('category')
AND tr.object_id IN (81595)
ORDER BY t.name ASC

Wp_get_object_terms()の呼び出しを絶対に必要な場合に限り、防ぐ/減らす、または最適化する方法はありますか

ループ内で呼び出されるget_permalink()まで追跡しました。このサイトでは、カテゴリを含むパーマリンクを使用しています。これは、投稿ごとにカテゴリを検索する理由を説明しています。これを最適化する方法はありますか?

2
Josh

あなたがそれを絞り込んできたように、あなたの投稿のパーマリンクはカテゴリーWPを含んでいるので、すべての投稿のためにそれらをどのようにまとめるかを考えています。

オブジェクトキャッシュ

主要なアプローチは、マイクロマンジの世代のビットやピースではなく、全体的なセットアップの効率を最適化することです。サイトに永続オブジェクトキャッシュを設定すると、カテゴリ情報は毎回データベースから取得されるのではなく、透過的にメモリにキャッシュされます。

ショートリンク

それが選択肢ではない場合や、オブジェクトのキャッシュに問題を与える程度の規模でリンクを生成している場合は、ややハックな方法があります。 「可愛い」リンクが有効になっていても、「可愛い」リンクが機能しなくなったわけではありません。

wp_get_shortlink()関数を使って、後者の種類のリンク(/?p=id)を生成することができます。

彼らはそうしないでしょう見栄えはしますしかし、WPを訪れると、それらは "きれいな"バージョンに透明にリダイレクトされます。もちろん、過度のリダイレクトも良いことではありませんが、トレードオフがあなたの状況にとって意味があるかどうかはあなた次第です。

2
Rarst