WPML
ステータス
未解決

問題の概要

WordPressの標準関数であるhas_categoryは、翻訳された投稿では機能しません。

例は以下のとおりです。

  1. 英語のスラッグ「test」と、そのフランス語翻訳「test-fr」を持つカテゴリーがあります。
  2. このカテゴリーは投稿に割り当てられています。
  3. テーマのsingle.phpファイルにあるループ内でhas_category(”test”)を呼び出すと、デフォルト言語ではtrueを返しますが、翻訳ではfalseを返します。

回避策

テーマのfunctions.phpファイルに新規フィルターを定義します。

function wp_has_category ($category) {
$category = get_term_by('name', $category, 'category');
return has_category($category);
}
add_filter('wp_has_category', 'wp_has_category', 10, 1);
has_category関数をこの新規フィルターに置き換えます。
apply_filters( 'wp_has_category', 'test' )

このフィルターは、元のカテゴリー名に基づいて翻訳されたカテゴリーを取得し、その翻訳されたカテゴリーが投稿に割り当てられているかどうかを確認します。

すべての既知の問題 →