get_edit_post_link() WP 2.3.0

Отримує посилання (URL) для редагування запису в адмін-панелі.

Може бути використана як усередині, так і зовні циклу WP. Працює всім видів записів: пости, сторінки, вкладення, ревізії і довільні типи записів.

Працює на основі:
current_user_can()
Основа для:
edit_post_link()
1 раз – 0.000344 сек
(швидко) | 50000 разів – 0.95 сек
(дуже швидко) |
PHP 7.0.8, WP 4.6.1

Хуки з функції
get_edit_post_link($id, $context);
$id
(число/WP_Post)
ID або об’єкт запису, посилання на редагування якого нам потрібно отримати.


За замовчуванням: 0 (поточний пост)
$context
(рядок)
display означає, що амперсанд (&) буде перетворено на
&. Вкажіть
'', щоб не змінювати амперсанд, наприклад для коректної роботи з
wp_redirect() .


Типово: ‘display’

Приклади

0

#1 Приклад роботи get_edit_post_link()

echo get_edit_post_link(1);

// поверне: http://example.com/wp-admin/post.php?post=1&action=edit
0

#2 Виведемо готове посилання

echo '<a href="' . get_edit_post_link(1) . '">Змінити</a>';
0

#3 Виведемо посилання, тільки якщо користувач має достатні для редагування постів права

if( current_user_can( 'edit_posts' ) ) {
	echo '<a href="'. get_edit_post_link(1) .'">Змінити</a>';
}

список змін

З версії 2.3.0Введено.

Код get_edit_post_link() WP 6.0.2

function get_edit_post_link( $id = 0, $context = 'display' ) {
	$post = get_post($id);
	if (! $post) {
		return;
	}

	if ( 'revision' === $post->post_type ) {
		$action = '';
	} elseif ( 'display' === $context ) {
		$action = '&action=edit';
	} else {
		$action = '&action=edit';
	}

	$post_type_object = get_post_type_object( $post->post_type );
	if (! $post_type_object) {
		return;
	}

	if ( ! current_user_can( 'edit_post', $post->ID ) ) {
		return;
	}

	if ( $post_type_object->_edit_link ) {
		$link = admin_url( sprintf( $post_type_object->_edit_link . $action, $post->ID ) );
	} else {
		$link = '';
	}

	/**
	 * Filters the post edit link.
	 *
	 * @ Since 2.3.0
	 *
	 * @param string $link The edit link.
	 * @param int $post_id Post ID.
	 * @param string $context The link context. Якщо встановити до 'display' then ampersands
	 * are encoded.
	 */
	return apply_filters( 'get_edit_post_link', $link, $post->ID, $context );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *