web-dev-qa-db-ja.com

送信元URLに基​​づいてURLを変更する方法はありますか

これは私の質問に対するフォローアップです。「 2つの異なるテンプレートをロードする2つの異なるURLを同じページに設定するにはどうすればよいですか?

Miloの回答(新しい書き換えエンドポイントの登録、エンドポイントが存在する場合は別のテンプレートの読み込み)を実装している場合、エンドポイントを含めるためにページ内のリンクをその場で書き換える方法(app-viewなど).

最初のエンドポイントが追加されるページは次のとおりです。 https://liquidchurch.com/messages/

書き換えエンドポイントとページテンプレートフィルタを使用するMiloの指示に基づくと、モバイルアプリから渡すURLは次のようになります。 https://liquidchurch.com/messages/app-view/

今度はこのページで私がシリーズの1つをつけることを言う、例えば:

https://liquidchurch.com/sermon-series/divine-direction/

問題は、これが通常のテンプレートでロードされ、特にモバイルビュー用に作成されたテンプレートではロードされないことです。それで、どういうわけか私はそれがapp-viewで表示されるべきであることをこのページに渡らなければなりません。そのため、個人のリダイレクト先となる実際のURLは次のようになります。

https://liquidchurch.com/sermon-series/divine-direction/app-view/

どのような方法でこれを達成することができますか?ありがとうございます。

2
davemackey

他の答えのpage_linkフィルタと同じロジックでpage_templateフィルタを使うことができます。エンドポイントクエリvarが設定されている場合、ページへのリンクにはapp-view/が追加されます。

function wpd_page_link( $link, $post_id ){
    global $wp_query;
    if( isset( $wp_query->query_vars['app-view'] ) ){
        return $link . 'app-view/';
    }
    return $link;
}
add_filter( 'page_link', 'wpd_page_link', 10, 2 );
1
Milo