get_edit_tag_link()

Возвращает:

  • URL страницы редактирования метки – в случае успеха.
  • null – если текущий пользователь не имеет прав на редактирование.
  • null – если второй параметр функции был изменён, и в него было передано название несуществующей таксономии.
get_edit_tag_link( $tag_id, $taxonomy = 'post_tag' )

Параметры

$tag_id
(целое) ID метки URL страницы редактирования которой нужно получить.
$taxonomy
(строка) Если вы вдруг захотите, чтобы эта функция возвращала URL редактирования не меток, а какой-то произвольной таксономии, то можете изменить этот параметр. По умолчанию он равен значению post_tag, что соответствует меткам.

Примеры

Ниже пример, для которого вероятно лучше использовать функцию edit_tag_link().

// получаем URL редактирования метки с ID=55
$edit_tag_link = get_edit_tag_link( 55 );
// если у пользователя есть права на редактирование, выводим ссылку
if( $edit_tag_link ) {
	echo '<a href="' . $edit_tag_link . '">Изменить метку</a>';
}

Если мы используем функцию на страницах архивов меток, то для получения ID текущей метки мы можем воспользоваться функциями get_query_var() или get_queried_object_id().

// получаем URL редактирования текущей метки
$edit_tag_link = get_edit_tag_link( get_query_var( 'tag_id' ) );
// если у пользователя есть права на редактирование, выводим ссылку
if( $edit_tag_link ) {
	echo '<a href="' . $edit_tag_link . '">Изменить эту метку</a>';
}

Хуки

Этот фильтр может быть полезен, когда таксономия меток присвоена к нескольким типам записей одновременно, например как у меня на сайте, к «Записи» и «Видеоуроки».

пример использования функции get_edit_term_link()
второй пример функции get_edit_term_link()

Возникает вопрос, какой пункт меню подсвечивать при переходе на страницу редактирования метки? Так вот, этот пункт меню задаётся $_GET-параметром post_type.

То есть например, если мы хотим всегда подсвечивать пункт меню «Видеоуроки» для меток, то мы должны добавить ?post_type=videourok (или какое там название типа было при регистрации).

Это можно сделать корректно функцией add_query_arg().

Теоретически вы даже можете не использовать фильтр-хук, и применить это сразу к функции:

$edit_tag_link = add_query_arg( 'post_type', 'videourok', get_edit_tag_link( 55 ) );
// http:// .... /wp-admin/term.php?taxonomy=post_tag&tag_ID=55&post_type=videourok

Хотя возможно более правильно – и вовсе использовать get_edit_term_link(), потому что у неё есть отдельный параметр под это.

$edit_tag_link = get_edit_tag_link( 55, 'post_tag', 'videourok' );

Но тогда оно сработает только там, где вы его добавите. Если же нужно сделать более глобально, то конечно используем фильтр:

add_filter( 'get_edit_tag_link', 'true_add_param_to_edit_tag_link', 25 );
 
function true_add_param_to_edit_tag_link( $link ) {
	return add_query_arg( 'post_type', 'videourok', $link );
}

Не знаете, как работать с фильтрами?

Источник: Блог Миши Рудрастых

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: