간혹 외부 API를 이용한 작업을 하거나, 클론 작업등 워드프레스 내부가 아닌 외부 페이지로 만들어야 하는 경우 워드프레스의 DB를 활용할 수 있는 방법에 대해 소개해보고자 합니다.
워드프레스 3.4 미만
워드프레스 3.4 미만인 경우는 다음과 같이 합니다.
|
1
|
require_once( $_SERVER[‘DOCUMENT_ROOT’] . ‘/wp-load.php’ );
|
위의 코드는 워드프레스의 API를 모두 불러오는 방법이긴 하지만 한가지 문제가 있습니다. 플러그인으로 캐쉬를 사용할 경우 원하는 결과를 받아오지 못하는 결과를 초래할 수 있어 아래의 코드처럼 wpdb 객체를 새로 생성해준 후 사용하는 것이 안전합니다.
|
1
2
3
4
|
define( ‘OUTSIDE_BLOCK_LOAD’, true );
require_once( $_SERVER[‘DOCUMENT_ROOT’] . ‘/wp-config.php’ );
require_once( $_SERVER[‘DOCUMENT_ROOT’] . ‘/wp-includes/wp-db.php’ );
$wpdb = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
|
단, 이렇게 사용하기 위해서 한가지 해주셔야 할 일이 있습니다.
하지 않아도 작동은 이상없습니다만, 보다 안전하게 사용하기 위해 반드시 wp-config.php 내에서 다음과 같은 코드를 한줄 추가해주세요!
OUTSIDE_BLOCK_LOAD 정의부분은 원하시는 문자로 바꾸셔도 되며, 저는 타인이 알 수 없는 문자로 바꾸시는걸 추천해드립니다.
|
1
|
if ( !( defined(‘OUTSIDE_BLOCK_LOAD’) && OUTSIDE_BLOCK_LOAD ) ) require_once(ABSPATH . ‘wp-settings.php’);
|
워드프레스 3.4 이상
3.4버전 이상에서는 위와 같은 방법으로 wpdb를 사용할 수 없게 되었습니다.
아래와 같이 작성하시면 워드프레스 3.4미만에서 사용한 코드보다는 워드프레스 코어를 더 많이 불러오긴 하지만 전체 코어를 불러오는 것은 아니기때문에 이런 부분은 참고하시어 작업하셔야 합니다.
|
1
2
|
define( ‘SHORTINIT’, true );
require_once( $_SERVER[‘DOCUMENT_ROOT’] . ‘/wp-load.php’ );
|
출처
워드프레스를 사용하면서 참 고마운 사람들이 많다라는 것을 많이 느낍니다. 저의 포스트 역시 아래 블로그의 내용을 참고하여 포스트하는 것이오니 참고하여 주시기 바랍니다.
3 Responses
감사합니다. ^^ 찾느라 고생햇음
http://djzone.im/2011/04/simple-xml-rpc-client-to-wordpress-made-easy/
XML-RPC 를 이용하는 방법이 있더군요. 어떤면에선 이게 훨 편해보입니다. 참고하세요.
네 좋은 정보 감사합니다. ^^