$converted_url = apply_filters( 'wpml_permalink', string $permalink, string $language_code = null, bool $full_resolution = false );
- タイプ
- filter
- カテゴリー
- ローカライズされたコンテンツの取得
- WPMLバージョン
- 3.2.2
説明
WPMLの言語設定で設定された言語 URL 形式に基づいて、WordPressのパーマリンクをフィルタリングし、言語固有のパーマリンクに変換します。
これは、「言語 URL 形式」が「ディレクトリごとの異なる言語」に設定されている場合、パーマリンクがhttp://domain.com/deの形式で返されることを意味します。「言語ごとに異なるドメイン」が選択されている場合、パーマリンクはリクエストされた言語に割り当てられた正しいドメインを含むように変換されます。
引数
- $permalink
- (string) (必須) フィルターするWordPress生成URLです。
- $language_code
- (string) (オプション) URLの変換先の言語です。2文字のコードを受け入れます。
nullに設定した場合、ルートページではデフォルト言語に、それ以外の場合は現在の言語にフォールバックします。デフォルトはnullです。 - $full_resolution
- (boolean) (オプション) ハードコードされたURLの完全な変換を有効にします。
使用例
例1
たとえば、「ディレクトリごとの異なる言語」を選択している場合、以下のコードを使用できます。
// will return http://domain.com/de/contact $wpml_permalink = apply_filters( 'wpml_permalink', 'http://domain.com/contact', 'de' );
例2
ページhttp://example.org/hello/とその翻訳http://example.org/fr/bonjour/があるとします。ホームページhttp://example.orgを表示している間にフィルターを呼び出すとします。
// displays http://example.org/fr/hello/ (wrong) echo apply_filters( 'wpml_permalink', 'http://example.org/hello/', 'fr' ); // displays http://example.org/fr/bonjour/ (correct) echo apply_filters( 'wpml_permalink', 'http://example.org/hello/', 'fr', true );
2つ目の例に関する重要な注意事項:
- 完全な変換は負荷の高いプロセスであるため、WPMLは解決されたURLをデータベースに保持する必要があります。wpml_permalinkの最初の呼び出しでは、データベースクエリと読み込み時間が大幅に増加するはずです。しかし、その後の呼び出しではプロセスに過負荷をかけることはありません。
- データベースの保持データは、投稿やタームが更新または削除されたときに部分的にクリアされます。また、設定 -> パーマリンクにアクセスすると完全にクリアされます(これは、問題が発生した場合の優れたトラブルシューティングのオプションです)。
- URLを解決できなかった場合、wpml_permalinkフィルターは元のURLを返します。
関連するフック
wpml_media_url, wpml_media_id, force_suppress_filters, wpml_get_translated_slug, wpml_home_url, wpml_translate_single_string, wpml_translate_string, wpml_elements_without_translations, wpml_unfiltered_admin_string, wpml_element_link