Как Я Могу Изменить URL-Адрес Таксономии На Основе Исходного URL-Адреса?


Ранее я написал вопрос о переписывании URL-адреса на основе исходного URL-адреса, и Майло предоставил мне рабочий ответ для страниц/сообщений. Но теперь я пытаюсь переписать таксономию, и та же функциональность, похоже, все ломает.

Вот мой код:

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' );

Что самое странное, так это то, к чему это приводит. Поэтому, если я выполню код, как Майло проинструктировал по вопросу, связанному выше, я получу URL-адрес для страниц например:

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

Но когда я использую приведенный выше код, я получаю то же самое:

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

Мысли?

Author: davemackey, 2018-01-24

1 answers

В term_link фильтр имеет другую сигнатуру для своей функции обратного вызова, чем фильтр page_link, что означает, что аргументы в вашем обратном вызове отличаются. (Также обратите внимание, что вам нужно будет явно задать номер аргумента при вызове add_filter, потому что по умолчанию add_filter установит только 1 аргумент. Например:

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
Author: Jared Cobb, 2018-01-25 01:24:07