그누보드, 워드프레스 외부페이지 연동

우리나라 웹사이트에서 주로 사용하는 CMS는 워드프레스, XE, 그누보드 정도입니다.
이번 포스팅에서는 그누보드와 워드프레스에서 외부 페이지를 연동하는 방법을 다룹니다.

그누보드 외부페이지 연동

그누보드에서 외부페이지를 연동시키기 위해서는 적당한 디렉토리를 만들고 그 안에 _common.php 파일을 작성합니다.
그 내용은 대개의 경우 다음과 같습니다.

<?php 
$g4_path = "./../gnu"; // common.php 의 상대 경로 
include_once("$g4_path/common.php"); 
?>

그런 뒤에 같은 디렉토리 내에 적당한 php 파일을 생성하고 첫 줄에 include_once(“./_common.php”);를 입력해 주면 그 php 파일은 그누보드와 연동됩니다.
즉 그누보드에서 제공하는 함수들(alert, goto_url, sql_query 등)을 사용할 수 있고, 현재 접속자의 id, 권한 등도 알 수 있습니다.
그누보드에서 제공하는 대표적인 변수들은 다음과 같습니다.

  • $g4: 그누보드 경로, 테이블 이름, 현재시각 등에 관한 정보
  • $config: 그누보드 설정값들에 관한 정보
  • $board: 접속 중인 게시판에 관한 정보
  • $member: 현재 접속자의 정보
  • $is_guest: 현재 접속자가 손님인지에 관한 정보
  • $is_member: 현재 접속자가 회원인지에 관한 정보
  • $is_admin: 현재 접속자가 관리자인지에 관한 정보

워드프레스 외부페이지 연동

워드프레스에서 외부페이지를 연동시키기 위해서는 적당한 디렉토리 안에 적당한 php 파일을 생성하고 첫 줄에 include_once(“(워드프레스의 상대경로)/wp-config.php”);를 입력해 주면 그 php 파일은 워드프레스와 연동됩니다.
즉 워드프레스에서 제공하는 객체들($wpdb 등)을 사용할 수 있고, 현재 접속자의 id, 권한 등도 알 수 있습니다.
워드프레스에서 제공하는 대표적인 함수들은 다음과 같습니다.

  • new WP_Query(): 해당 조건에 맞는 포스트에 관한 정보
  • wp_get_current_user(): 현재 접속자에 관한 정보
  • get_header(): 헤더 출력
  • get_sidebar(): 사이드바 출력
  • get_footer(): 푸터 출력

그누보드와 워드프레스의 로그인 연동(SSO; Single sign-on)

그누보드나 워드프레스 중 하나에 로그인하면 다른 하나에도 로그인이 되도록 하는 개념입니다.
php 파일을 작성하여 그누보드와 워드프레스의 로그인을 한꺼번에 처리하도록 할 수도 있고, 로그인 후에 redirect를 통해 순차적으로 로그인이 이루어지도록 할 수도 있습니다.

그누보드 로그인의 경우에는 /bbs/login_check.php 파일의 소스를 참고하여 로그인을 구현하면 됩니다.
워드프레스 로그인의 경우에는 wp_set_current_user 함수와 wp_validate_auth_cookie 함수를 사용하여 로그인을 구현하면 됩니다.

다만 로그인이 이루어진 이후의 문제점이 있습니다.
하나의 php 페이지에서는 그누보드와 워드프레스의 변수/함수를 한꺼번에 이용할 수 없고 둘 중 하나를 선택해야만 합니다.
그누보드와 연동시킬 경우 워드프레스와 연동시킬 수 없고, 그 반대의 경우에도 마찬가지입니다.
이런 현상이 일어나는 것은 function_exists 함수를 사용하지 않고 정의된 함수 중에서 이름이 중복되는 함수인 is_admin()이 그누보드와 워드프레스에 공통적으로 존재하기 때문입니다.
따라서 그누보드나 워드프레스 중 한쪽에서 is_admin 함수를 재정의하거나 function_exists 구문을 사용해서 정의한다면 문제를 해결할 수 있습니다.

그러나 함수 중복 오류 문제가 해결되어도 성능 문제가 존재합니다.
한 php 파일에서 그누보드와 워드프레스를 한꺼번에 사용하게 된다면, 그누보드와 워드프레스가 모두 실행되어야 하므로 실행속도가 느려집니다.

이러한 점들을 고려한다면, 꼭 필요한 경우가 아닌 경우라면 하나의 php 파일에서는 그누보드나 워드프레스 중 하나만 선택해서 실행하도록 하는 것이 좋습니다.

관련 포스트