私が作っているテーマのURL書き換えに問題があります。これは基本的にはルーツテーマに基づくギャラリーテーマです。これがサイトナビゲーションの仕組みです。
domain.com
domain.com/landscapes
domain.com/landscapes/image-title/#id
私がやりたいことは、添付ファイルのページURLから画像のタイトルを削除し、それをgalleryで置き換えることで、URLにdomain.com/landscapes/gallery/#id
が表示されるようにすることです。
私のcontent-image.phpは画像のURLを取得するためにwp_get_attachment_image_src()
を使います。かなりパーマリンクを無効にすると、私はdomain.com/index.php?attachment_id=205
のような画像URLを得ます
Rewrite Rules Inspector Pluginを使ってきれいなURLでチェックすると、そのURL(domain.com/landscapes/image-title/#id
)は次のような2つの一致を取得します。
規則1:(.?.+?)(/[0-9]+)?/?$
書き換え1:index.php?pagename=$matches[1]&page=$matches[2]
ルール2:[^/]+/([^/]+)/?$
書き換え2:index.php?attachment=$matches[1]
私が理解していることから、2番目のルールはこの場合に適用されているものですが、私はそれを何に変更するべきかについて手掛かりがありません。これを行う方法について何かアイデアはありますか?
わかりましたそれで私は答えを見つけました。私は https://wordpress.stackexchange.com/a/56426/37472 に従ってコードを使用し、'series'
のすべての参照を'gallery'
に変更しました。
domain.com/landscapes/gallery/123/
からindex.php?attachment_id=123
のようなリンクを解析するために必要な書き換え規則が追加されました。
私の仮定は、wordpressはget_permalink()
によって生成されるデフォルトのパーマリンクをdomain.com/landscapes/gallery/123/
フォーマットで表示するということでした。そうではありません。ただし、私はギャラリースクリプトで簡単な回避策を使用して、必要な形式でアンカーリンクを生成しました。これは、ホームページ、サブページ、および親/その他のページでは異なります。スクリプトは同位体と遅延ロードを使用してギャラリーをロードします http://pastie.org/8294032 。
ページのフォーマットが異なる場合は、my_rewrite_rules_array( $rules )
関数を次のように変更しました。
function my_rewrite_rules_array( $rules ) {
$my_rules = array();
$my_rules['gallery/(\d+)/?$'] = 'index.php?attachment_id=$matches[1]';
$my_rules['(\w+)/gallery/(\d+)/?$'] = 'index.php?attachment_id=$matches[2]';
$my_rules['(\w+)/(\w+)/gallery/(\d+)/?$'] = 'index.php?attachment_id=$matches[3]';
return $my_rules + $rules;
}