Using WordPress ‘get_edit_post_link’ PHP filter

The get_edit_post_link WordPress PHP filter allows you to modify the post edit link.


add_filter('get_edit_post_link', 'your_custom_function', 10, 3);
function your_custom_function($link, $post_id, $context) {
  // your custom code here
  return $link;


  • $link (string): The edit link.
  • $post_id (int): Post ID.
  • $context (string): The link context. If set to ‘display’, then ampersands are encoded.

More information

See WordPress Developer Resources: get_edit_post_link


Change the edit post link for a custom post type

This code changes the edit post link for the custom post type ‘my_custom_post_type’ to a custom URL.

add_filter('get_edit_post_link', 'change_edit_post_link', 10, 3);
function change_edit_post_link($link, $post_id, $context) {
  $post = get_post($post_id);
  if ($post->post_type == 'my_custom_post_type') {
    $link = '' . $post_id;
  return $link;

Add a query parameter to the edit post link

This code appends a query parameter ‘custom_param’ with the value ‘1’ to the edit post link.

add_filter('get_edit_post_link', 'add_query_param_to_edit_link', 10, 3);
function add_query_param_to_edit_link($link, $post_id, $context) {
  $link = add_query_arg('custom_param', '1', $link);
  return $link;

Modify the edit post link based on user role

This code changes the edit post link for authors to include an additional parameter ‘author_edit’ with the value ‘1’.

add_filter('get_edit_post_link', 'modify_link_for_authors', 10, 3);
function modify_link_for_authors($link, $post_id, $context) {
  if (current_user_can('author')) {
    $link = add_query_arg('author_edit', '1', $link);
  return $link;

Change the edit post link to an external site

This code changes the edit post link to an external site URL based on a custom field ‘external_edit_url’.

add_filter('get_edit_post_link', 'change_to_external_edit_link', 10, 3);
function change_to_external_edit_link($link, $post_id, $context) {
  $external_url = get_post_meta($post_id, 'external_edit_url', true);
  if (!empty($external_url)) {
    $link = $external_url;
  return $link;

Remove the edit post link for certain posts

This code removes the edit post link for posts that have a custom field ‘disable_edit_link’ set to ‘1’.

add_filter('get_edit_post_link', 'remove_edit_link_for_certain_posts', 10, 3);
function remove_edit_link_for_certain_posts($link, $post_id, $context) {
  $disable_edit_link = get_post_meta($post_id, 'disable_edit_link', true);
  if ($disable_edit_link == '1') {
    $link = '';
  return $link;