- ステータス
- 未解決
問題の概要
WordPressの標準関数であるhas_categoryは、翻訳された投稿では機能しません。
例は以下のとおりです。
- 英語のスラッグ「test」と、そのフランス語翻訳「test-fr」を持つカテゴリーがあります。
- このカテゴリーは投稿に割り当てられています。
- テーマの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' )
このフィルターは、元のカテゴリー名に基づいて翻訳されたカテゴリーを取得し、その翻訳されたカテゴリーが投稿に割り当てられているかどうかを確認します。