[WordPress] 워드프레스 포스트 화면에서 수정 버튼 삽입하기 feat. edit_post_link

워드프레스 프론트 엔드에서 포스트를 수정 할 수 있는 링크 버튼을 만드는 방법.

내가 작성한 포스트를 프론트엔드에서 보면서 마음에 들지 않으면 바로 수정 할 수 있도록 해주는 수정 버튼은, 생각해보면 아주 당연하고도 자연스러운 것인데, 워드프레스에서는 당연한 기능을 당연히 제공하지 않는다. 그래서 테마 제작자가 수정 버튼을 직접 넣어 주어야 한다.

기본적인 수정 버튼 삽입의 기본 조건

수정 버튼을 표시 하시는 것은 아주 간단하다. 실제 워드프레스 내부 함수(edit_post_link)를 제공하고 있기도 하고. 하지만 먼저 수정 버튼이 언제 표시 되어야 하는지 부터 고민을 해야 한다.

당연하게도 포스트를 수정하기 위한 기본 조건은

  1. 실제 해당 블로그에 로그인된 사용자여야 할 것이며,
  2. 로그인된 사용자 중에서 해당 포스트의 작성자만이

해당 포스트를 수정 할 수 있어야 한다.

물론 최고관리자라든가 모든 게시물에 대한 수정권한을 가지고 있는 사용자라면 해당 조건을 추가해 주어야 할 것이다.

수정 버튼 표시 예제

아래는 실제 예제의 풀버전.

<?php 
    $author_id = get_the_author_meta('ID');
    $current_user_id = get_current_user_id();
    if ( is_user_logged_in() && $author_id == $current_user_id ) {
        edit_post_link('EDIT', '<span>', '</span>');
    }
?>

예제 해석하기

포스트 작성자의 ID 확인하기

$author_id = get_the_author_meta('ID');

해당 포스트를 작성한 작성자의 ID를 파악해 둔다. 나중에 실제 로그인한 유저와 일치하는지 확인 하기 위함이다.

작성자의 ID 를 확인 하기 위해서는 워드프레스 함수인 get_the_author_meta 함수를 사용한다.

현재 로그인한 사용자의 ID 확인하기

$current_user_id = get_current_user_id();

현재 로그인한 사용자가 누구인지 확인해 ID 를 변수에 담는다. 앞에서 확인해 두었던 작성자 ID와 비교할 것이다.

로그인한 사용자 ID 확인을 위해 get_current_user_id 함수를 사용했는데, 만약 현재 사용자가 로그인 하지 않은 상태라면 해당 함수는 0 을 반환한다.

현재 사용자가 로그인 상태이면서 포스트 작성자인지 확인하기

if ( is_user_logged_in() && $author_id == $current_user_id ) {
    ...
}

이제 if 문을 사용하여 현재 사용자가 로그인한 상태인지, 그리고 포스트 작성자와 로그인한 사용자의 ID 가 일치 하는지 확인한다.

현재 사용자가 로그인 했는지 확인 하기 위해서 is_user_logged_in 함수를 사용하면 된다. 이 함수는 사용자가 로그인해 있는 상태라면 True 를, 그렇지 않으면 False 를 반환한다.

포스트 작성자와 현재 로그인한 사용자가 일치 하는지 확인 하기 위해 앞에서 확인한 $author_id$current_user_id 를 비교해준다.

포스트 수정을 위한 링크 출력

edit_post_link('EDIT', '<span>', '</span>');

if 문에서 조건을 모두 만족한다면 포스트를 수정 할 수 있는 링크를 출력하면 된다. 이 기능은 워드프레스 자체적으로 edit_post_link 함수를 제공하기 때문에 아주 쉽게 사용할 수 있다.


해당 기능에 대한 기본 흐름만 잡혀 있으면 실제 구현은 어렵지 않으니 원하는 바에 따라 다양하게 활용할 수 있다.