通常のリンクをページまたは投稿に追加する時、WordPressはそのページのURLをリンクとして保存します。 このためURLが変更されると、リンクが壊れます。

WordPressではページアドレスの変更が容易なため、全ての着信リンクが壊れてしまします(404エラー)。 これを防止するには幾つかの方法があります:

  • ページの親を変更する
  • スラグを変更する
  • サイトのパーマリンク構造を変更する

WPMLはURLの変更による着信リンクの破壊を予防します。 リンクを作成する時、WPMLは自動的にこれを柔軟(スティッキー)にします。 WPMLは(リンクが作成された時)ページのURLを保存する代わりに、ページ番号を保存します。 これは何が起こっても決して変わりません。

ページが表示されると、WPMLはあなたがリンクするページにパーマリンクを挿入します。 URLが変更されると、それにリンクされる全てのページが直ちにアップデートされ、正しいアドレスにリンクされます。

以下のスクリーンショットはSticky Linkが有効になると、データベース内で内部リンクがどのように見えるかを示しています:

WPMLによりスティッキーに変換されたリンク
WPMLによりスティッキーに変換されたリンク

ユーザーがこのような「おかしな」リンクを見ることは決してありません。 ページが表示された時、WPMLは現在のパーマリンク でこれらを取り替えます。

Sticky Links モジュールを有効にすると、ストリングをコントロールできるようになります。 有効にするには、WPML -> Sticky links ページを開きます。

プロセス前のSticky Links
プロセス前のSticky Links

既定により、WPMLは投稿文の全てのリンクをスティッキーに変換します。 翻訳を編集するにはクリック

WPMLは普通のリンクをスティッキーリンクに一括変換します。 また既存の壊れたリンクを報告するため、修正できます。

コンテンツ作成後にSticky Linksを有効にする場合、既存コンテンツ内のリンクはスティッキーに直ちに変換されません。

Sticky Links管理画面が普通のリンク (非スティッキー) を含むコンテンツ数を表示します。 WPMLはこれらのコンテンツをスキャンし、リンクを全てスティッキーに変換します。 これを行うにはスキャンボタンをクリックしてください。

Revert sticky URLs to permalinks(スティッキーURLをパーマリンクに戻す)をクリックすることで常に普通のリンク(非スティッキー)に戻すことができます。

他の言語にページをリンクする

時折、他言語のページにリンクを挿入しなければならないことがあります。 Sticky Linksはリンクを自動的に調整するため、この操作を防止し、リンクを同じ言語に移動するよう調整するかもしれません。

他言語のページにリンクするには、テーマのfunctions.phpファイルに以下のフィルタを追加する必要があります。

Allow links to pages in other languages
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つのラインを使用します:

Example of specifying the list of URLs to allow linking to
$blacklist[] = 'documentation';

$blacklist[] = 'page-builders';