Возвращает URL, ведущий на страницу редактирования элемента таксономии в админке.
В случае, если передано название несуществующей таксономии, ничего не возвращает.
В случае, если у текущего пользователя нет прав на редактирование данного элемента таксономии current_user_can( 'edit_term', $term_id )
, ничего не возвращает.
get_edit_term_link( $term_id, $taxonomy = '', $object_type = '' )
Параметры
- $term_id
- (целое|WP_Term) ID или объект термина, ссылку на редактирование которого нужно вернуть.
Кстати, ID текущего элемента таксономии, на странице которого находимся, мы можем получить функцией get_queried_object_id() - $taxonomy
- Название таксономии.
Если параметр не указан, то в первом параметре вам обязательно нужно передать не ID, а объект термина. - $object_type
- (строка) Название типа поста.
Нужен только в том случае, когда таксономия присвоена сразу нескольким типам записи. Тогда, при переходе на страницу её редактирования в админке, мы можем подсветить активным в меню тот тип записи, который нужно, подробнее в примере 2.
Примеры
1. Выводим ссылку на редактирование текущей рубрики
То, что я вам сейчас покажу, я полагаю, лучше реализовать функцией edit_term_link().
$edit_term_link = get_edit_term_link( get_queried_object_id(), 'category' ) ); // окей, у пользователя есть права на редактирование, выводим ссылку if( $edit_term_link ) { echo '<a href="' . $edit_term_link . '">Редактировать рубрику</a>'; }
Воспользовавшись функцией get_query_var(), мы можем применить данный код не только к рубрикам, но и к любым другим элементам таксономий автоматически:
$edit_term_link = get_edit_term_link( get_queried_object_id(), get_query_var( 'taxonomy' ) ) ); // окей, у пользователя есть права на редактирование, выводим ссылку if( $edit_term_link ) { echo '<a href="' . $edit_term_link . '">Редактировать</a>'; }
Соответственно этот код нужно использовать в шаблонах архивов таксономий/рубрик/меток.
2. Разбор параметра $object_type
Итак, прежде всего давайте вспомним, что при регистрации таксономия может быть присвоена сразу двум и более типам записей.
Например даже на моём сайте таксономия «Метки» присвоена к «Записи» и «Видеоуроки». А значит и в админ-меню она появится и под записями, и под видеоуроками. Тогда возникает вопрос, как определиться, какое родительское меню открывать при переходе на редактирование метки? Вот тут и вмешивается параметр $object_type
, который добавляет к урлу редактирования $_GET-параметр post_type
, отвечающий за выделение активного пункта админ-меню.
Чекаем примеры:
$edit_url = get_edit_term_link( $tag_id, 'post_tag', 'post' ) ); // http://.../wp-admin/edit-tags.php?taxonomy=post_tag&post_type=post
$edit_url = get_edit_term_link( $tag_id, 'post_tag', 'videourok' ) ); // http://.../wp-admin/edit-tags.php?taxonomy=post_tag&post_type=videourok
Хуки
get_edit_term_link
Перед тем, как функция возвращает URL, к нему применяется этот фильтр-хук. Тут например мы можем повеселиться с функциями add_query_arg() и remove_query_arg().
Изменения будут применены для всех использований функции на сайте.
Предположим, что мы хотим, чтобы при переходе на редактирование метки, у нас всегда подсвечивался пункт меню «Видеоуроки» и… например добавить ещё какой-то $_GET-параметр!
add_filter( 'get_edit_term_link', 'true_change_edit_term_link', 25, 4 ); function true_change_edit_term_link( $location, $term_id, $taxonomy, $object_type ) { // чекаем переданнный параметр $taxonomy, если не Метки – выходим if( 'post_tag' !== $taxonomy ) { return $location; } if( $object_type ) { $location = remove_query_arg( 'post_type', $location ); } $location = add_query_arg( array( 'post_type' => 'videourok', 'test' => 'yes', ), $location ); return $location; }
Не знаете, как работать с фильтрами?