Wordpress - How to Remove all Instances of edit_post_link

One way is to edit the template files of your theme, as you mentioned in your question you are using Twenty Eleven, so you can follow the advice of @kaiser.

The other way that I will prefer instead of modifying the template files is to use the filter. The advantage of filter is it will work with other themes too. The disadvantage of filter is that you will have empty <span></span> tags in your html source, though they won't be visible on the actual page.

You can put the following code in your functions.php.

function wpse_remove_edit_post_link( $link ) {
    return '';
}
add_filter('edit_post_link', 'wpse_remove_edit_post_link');

P.S you can use the filter to disable the edit post link on selective posts too.


Hameedullah's answer is more elegant, but doesn't eliminate the before and after items. To do that, you need to filter get_edit_post_link instead, and return null.

function wpse_remove_get_edit_post_link( $link ) {
    return null;
}
add_filter('get_edit_post_link', 'wpse_remove_get_edit_post_link');

It's the edit_post_link() function. You'll find lines like the following, that you need to comment out:

// from /twentyeleven/content-intro.php
edit_post_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' );