web-dev-qa-db-ja.com

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

私は以前 元のURL に基づいてURLを書き換えることについての質問を書き、Miloは私にページ/投稿のための実用的な答えを提供してくれました。しかし今、私は分類法の書き換えをしようとしていると同じ機能は物事を壊すようです。

これが私のコードです:

function lqd_series_link( $term_id, $taxonomy ) {
  if ( $taxonomy == 'gc-sermon-series' && isset( $wp_query->query_vars['app-view'] ) ) {
    return $taxonomy; // I've also tried $link
  }
  return $taxonomy;
}
add_filter( 'term_link', 'lqd_series_link' );

奇妙なことは、これが何をもたらすかです。ですので、私がMiloが上記のリンクされた質問で指示したようにコードをするならば、私は最終的に次のようなページのURLになります:

https://liquidchurch.com/messages/app-view/

しかし、私が上記のコードを使用するとき、私は同じ正確な事に終わります:

https://liquidchurch.com/messages/app-view/

考えですか?

1
davemackey

term_link フィルタは、コールバック関数のシグニチャがpage_linkフィルタとは異なります。つまり、コールバック内の引数が異なります。 (また、デフォルトではadd_filterは引数を1つしか設定しないため、add_filterを呼び出すときには引数番号を明示的に設定する必要があります。例:

add_filter( 'term_link', 'lqd_series_link', 10, 3 ); // Where 3 is the number of arguments for your callback function

それからあなたのコールバックで:

function lqd_series_link( $url, $term, $taxonomy ) {
    global $wp_query;
    if ( $taxonomy == 'gc-sermon-series' && isset( $wp_query->query_vars['app-view'] ) ) {
        return $url . 'app-view/';
    }
    return $url;
}
1
Jared Cobb