[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 확인하기

$current_user_id = get_current_user_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 함수를 제공하기 때문에 아주 쉽게 사용할 수 있습니다.


해당 기능에 대한 기본 흐름만 잡혀 있으면 실제 구현은 어렵지 않습니다. 이를 기반으로 더욱 다양하게 활용해 보세요.

참고자료