WPML Sticky Linksは、ページが移動したり名前が変更されても、ページと投稿の間のリンクが切れるのを防ぎます。
WordPressでは、ページのアドレスを変更することがあまりにも簡単で、すべての着信リンクが壊れてしまいます(404エラー)。 404エラーになる可能性のあるアクションをいくつか紹介します:
- ページの親を変更する
- スラグの変更
- サイトのパーマリンク構造の変更
WPMLはURLの変更によるリンク切れを防ぎます。 リンクを作成すると、WPMLは自動的にそのリンクをSticky Linksにします。 リンクが作成された時点の)そのページのURLをストアする代わりに、ページ番号をストアする。 これは何をしても変わることはない。
ページが表示されると、WPMLはリンク先のパーマリンクを挿入します。 URLが変更されると、リンクしているすべてのページが即座に更新され、正しいアドレスにリンクされます。
以下のスクリーンショットは、Sticky Linksを有効にすると、内部リンクがデータベース上でどのように見えるかを示しています。
あなたのユーザーは、これらの「奇妙な」リンクを見ることはありません。 その代わり、WPMLはページを表示する際に現在のパーマリンクに置き換えます。
スティッキーリンクのコントロール
Sticky Linksモジュールを有効にすると、それが扱う文字列をコントロールできるようになります。 これを行うには、WPML →Sticky linksの ページにアクセスしてください。
デフォルトでは、WPMLは投稿本文内のすべてのリンクをSticky Linksにします。 ウィジェットや文字列のリンクをSticky Linksにすることもできます。
WPMLでは、通常のリンクをすべてSticky Linksに一括置換することができます。 また、既存のリンク切れを報告し、修正する手助けもする。
コンテンツ作成後にSticky Linksを有効にした場合、既存のコンテンツ内のリンクはすぐにSticky Linksにはなりません。
Sticky Linksの管理画面では、どの程度のコンテンツに通常の(Stickyではない)リンクを含めることができるかを設定できます。 WPMLはそのコンテンツをスキャンし、すべてのリンクをSticky Linksに変換することができます。 スキャンボタンをクリックしてください。
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スラグを指定します。
この例では、英語版の「Documentation」(スラグ「documentation」)と「Page Builders」(スラグ「page-builders」)のページにリンクしたいので、以下の2行を使用する:
$blacklist[] = 'documentation'; $blacklist[] = 'page-builders';
ショートコードコンテンツ内のリンクの処理
デフォルトでは、Sticky Linksプラグインはショートコードによって生成されたリンクを検索しません。
ページに”?page_id=XX“のようなリンクを生成するショートコードがある場合、パーマリンクに変換されずにユーザーに表示されます。
これらのショートコードコンテンツをSticky Linksで扱うには、次のスニペットをfunctions.phpファイルに追加してください:
if ( class_exists( 'WPML_Sticky_Links' ) ) { global $WPML_Sticky_Links; add_filter( 'do_shortcode_tag', [ $WPML_Sticky_Links, 'show_permalinks' ], 0 ); }