Получение ссылки для редактирования термина в WordPress: get_edit_term_link()

GET_EDIT_TERM_LINK() │ WP 3.1.0

Что это?

Функция get_edit_term_link() в WordPress позволяет получить ссылку для редактирования определённого термина (например, категории или тега).

Как она работает

Эта функция использует следующие функции:

  • admin_url()
  • add_query_arg()

Использование функции

Функция вызывается следующим образом:

get_edit_term_link( $term, $taxonomy, $object_type );

Параметры:

  • $term (обязательный): ID или объект термина, который нужно отредактировать. Это может быть число или объект типа WP_Term.
  • $taxonomy: Таксономия, к которой относится термин. По умолчанию используется таксономия, связанная с переданным термином.
  • $object_type: Тип объекта (например, посты), который нужно выделить на странице редактирования. По умолчанию берётся первый тип объекта, связанный с таксономией.

Возвращаемое значение

Функция возвращает строку с URL для редактирования термина или null, если произошла ошибка.

Примеры

Пример 1: Получение URL для редактирования элемента таксономии

В этом примере мы получаем ссылку для редактирования элемента таксономии с ID 154:

$term = get_term( 154 ); // Получаем термин
$edit_link = get_edit_term_link( $term ); // Получаем ссылку для редактирования

echo $edit_link; // Вывод: http://example.com/wp-admin/edit-tags.php?action=edit&taxonomy=mycat&tag_ID=154&post_type=myposttype

Или можно записать это проще:

$edit_link = get_edit_term_link( 123 );

Пример 2: Выделение типа поста в меню администратора

Если одна и та же таксономия принадлежит нескольким типам постов, мы можем выбрать тип поста, который будет выделен в меню администратора:

$term_id   = 123;
$taxonomy  = 'my_tax';
$post_type = 'my_post_type';

$edit_link = get_edit_term_link( $term_id, $taxonomy, $post_type );

echo esc_url( $edit_link ); // Выводит URL для редактирования

Код функции

Вот как выглядит реализация функции:

function get_edit_term_link( $term, $taxonomy = '', $object_type = '' ) {
$term = get_term( $term, $taxonomy );
if ( ! $term || is_wp_error( $term ) ) {
return;
}

$tax     = get_taxonomy( $term->taxonomy );
$term_id = $term->term_id;
if ( ! $tax || ! current_user_can( 'edit_term', $term_id ) ) {
    return;
}

$args = array(
    'taxonomy' => $tax->name,
    'tag_ID'   => $term_id,
);

if ( $object_type ) {
    $args['post_type'] = $object_type;
} elseif ( ! empty( $tax->object_type ) ) {
    $args['post_type'] = reset( $tax->object_type );
}

if ( $tax->show_ui ) {
    $location = add_query_arg( $args, admin_url( 'term.php' ) );
} else {
    $location = '';
}

return apply_filters( 'get_edit_term_link', $location, $term_id, $taxonomy, $object_type );

}

История изменений

  • С версии 3.1.0: Функция была введена.
  • С версии 4.5.0: Параметр $taxonomy стал необязательным.

Связанные функции

  • admin_url()
  • get_taxonomy()
  • get_term()
  • edit_term_link()

Эти функции могут помочь вам в работе с терминами и таксономиями в WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *