通常のリンクをページまたは投稿に追加する時、WordPressはそのページのURLをリンクとして保存します。 このためURLが変更されると、リンクが壊れます。
WordPressではページアドレスの変更が容易なため、全ての着信リンクが壊れてしまします(404エラー)。 これを防止するには幾つかの方法があります:
- ページの親を変更する
- スラグを変更する
- サイトのパーマリンク構造を変更する
WPMLはURLの変更による着信リンクの破壊を予防します。 リンクを作成する時、WPMLは自動的にこれを柔軟(スティッキー)にします。 WPMLは(リンクが作成された時)ページのURLを保存する代わりに、ページ番号を保存します。 これは何が起こっても決して変わりません。
ページが表示されると、WPMLはあなたがリンクするページにパーマリンクを挿入します。 URLが変更されると、それにリンクされる全てのページが直ちにアップデートされ、正しいアドレスにリンクされます。
以下のスクリーンショットはSticky Linkが有効になると、データベース内で内部リンクがどのように見えるかを示しています:
ユーザーがこのような「おかしな」リンクを見ることは決してありません。 ページが表示された時、WPMLは現在のパーマリンク でこれらを取り替えます。
Sticky links コントロール
Sticky Links モジュールを有効にすると、ストリングをコントロールできるようになります。 有効にするには、WPML -> Sticky links ページを開きます。
既定により、WPMLは投稿文の全てのリンクをスティッキーに変換します。 翻訳を編集するにはクリック
WPMLは普通のリンクをスティッキーリンクに一括変換します。 また既存の壊れたリンクを報告するため、修正できます。
コンテンツ作成後にSticky Linksを有効にする場合、既存コンテンツ内のリンクはスティッキーに直ちに変換されません。
Sticky Links管理画面が普通のリンク (非スティッキー) を含むコンテンツ数を表示します。 WPMLはこれらのコンテンツをスキャンし、リンクを全てスティッキーに変換します。 これを行うにはスキャンボタンをクリックしてください。
Revert sticky URLs to permalinks(スティッキーURLをパーマリンクに戻す)をクリックすることで常に普通のリンク(非スティッキー)に戻すことができます。
他の言語にページをリンクする
時折、他言語のページにリンクを挿入しなければならないことがあります。 Sticky Linksはリンクを自動的に調整するため、この操作を防止し、リンクを同じ言語に移動するよう調整するかもしれません。
他言語のページにリンクするには、テーマのfunctions.phpファイルに以下のフィルタを追加する必要があります。
add_filter( 'wpml_sl_blacklist_requests', 'wpml_sl_blacklist_requests', 10, 2 ); function wpml_sl_blacklist_requests( $blacklist, $sitepress ) { $blacklist[] = 'documentation'; return $blacklist; }
上記のコードは$blacklist配列を使用してリンクしたい言語のページのURLスラグを全て指定します。
この例では、英語版の「ドキュメンテーション」(slug “documentation”)と「Page Builder」(slug “page-builders”)ページにリンクすることを希望します。このため以下の2つのラインを使用します:
$blacklist[] = 'documentation'; $blacklist[] = 'page-builders';