wordpress 4.1 기준 작성
일하던중 본의아니게 대기를 하게 되는 시점이 있어서
그동안 php및 wordpress에 대해서 공부하고자 하여
목적없이 소스 까서 보는중입니다.
태클이나 질문 주셔도 되지만 그때 제가 놀고 있어서 답변할지는 모르겠습니다.
1. index.php 로드
단순이 2. wp-blog-header.php로 넘기는 역할
1
2
3
4 5 6 |
<?php
define('WP_USE_THEMES', true);
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
|
내용 설명은 아래 링크에 너무 잘 설명되어 있어서 제 작성 의욕을 꺽었습니다.
하단 링크를 참고하세요
간추리자면
line 02. WP_USE_THEMES 라는 상수를 만들고 나머지는
line 04. 2. wp-blog-header.php Call
2. wp-blog-header.php 로드
설정관련 내용은 3.wp-load.php
테마에 관련된 내용은 template-loader.php 에서 로드
1
2
3
4
5
6
7
8 9 10 11 12 13 14 15 |
<?php
if ( !isset($wp_did_header) ) {
$wp_did_header = true;
require_once( dirname(__FILE__) . '/wp-load.php' );
wp();
require_once( ABSPATH . WPINC . '/template-loader.php' );
}
|
line 08. 3.wp-load.php (워드프레스 관련 설정파일 로드 시작파일)
line 10. wp() 함수를 실행하고
line 12. template-loader.php 를 로드
여기서 wp() 함수는 어디서 선언된것도 아닌데 떡하니 들어가있네요
하지만 역시 구글과 개발자는 위대합니다.
아래 블로그의 3/5지점을 확인하세요
http://biscuitpress.kr/518
3. wp-load.php
4.wp-config.php 를 호출 및 에러처리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
<?php
define( 'ABSPATH', dirname(__FILE__) . '/' );
error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
if ( file_exists( ABSPATH . 'wp-config.php') ) {
require_once( ABSPATH . 'wp-config.php' );
} elseif ( file_exists( dirname(ABSPATH) . '/wp-config.php' ) && ! file_exists( dirname(ABSPATH) . '/wp-settings.php' ) ) {
require_once( dirname(ABSPATH) . '/wp-config.php' );
} else {
define( 'WPINC', 'wp-includes' );
require_once( ABSPATH . WPINC . '/load.php' );
wp_fix_server_vars();
require_once( ABSPATH . WPINC . '/functions.php' );
$path = wp_guess_url() . '/wp-admin/setup-config.php';
if ( false === strpos( $_SERVER['REQUEST_URI'], 'setup-config' ) ) {
header( 'Location: ' . $path );
exit;
}
define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
require_once( ABSPATH . WPINC . '/version.php' );
wp_check_php_mysql_versions();
wp_load_translations_early();
$die = __( "There doesn't seem to be a <code>wp-config.php</code> file. I need this before we can get started." ) . '</p>';
$die .= '<p>' . __( "Need more help? <a href='https://codex.wordpress.org/Editing_wp-config.php'>We got it</a>." ) . '</p>';
$die .= '<p>' . __( "You can create a <code>wp-config.php</code> file through a web interface, but this doesn't work for all server setups. The safest way is to manually create the file." ) . '</p>';
$die .= '<p><a href="' . $path . '" class="button button-large">' . __( "Create a Configuration File" ) . '</a>';
wp_die( $die, __( 'WordPress › Error' ) );
}
|
line 05. filepath 를 상수(ABSPATH)로 잡아주고
line 08. 소스 오류 발견시 출력되도록 오류 레포팅 함수를 셋팅
(안에 상수는 기존에 정의되어 있는것임)
line 11. ABSPATH 폴더에 wp-config.php 실행전 체크
true인 경우 4.wp-config.php 로드
true인 경우 4.wp-config.php 로드
line 17. 한번더 체크
true 인 경우 4.wp-config.php 로드
line 23. 분기
false 의 경우 ~/wp-includes 경로에서 (끝까지 실행)
true 인 경우 4.wp-config.php 로드
line 23. 분기
false 의 경우 ~/wp-includes 경로에서 (끝까지 실행)
load.php 로드
wp_fix_server_vars() 함수 실행
fucntions.php 로드
line 21 $path 변수에 문자열(경로 + setup_config.php) 저장
line 40. setup_config.php = false 여부 체크
연산자 관련 자료 : http://pcomkr.tistory.com/8
line 51. /version.php 로드
line 54. wp_check_php_mysql_versions();
line 56 wp_load_translations_early();
line 68~ wp_die() 함수 실행
여기서 die() or exit() 함수를 피하고 재정의한 함수를 씀
wp_fix_server_vars() 함수 실행
fucntions.php 로드
line 21 $path 변수에 문자열(경로 + setup_config.php) 저장
line 40. setup_config.php = false 여부 체크
연산자 관련 자료 : http://pcomkr.tistory.com/8
line 51. /version.php 로드
line 54. wp_check_php_mysql_versions();
line 56 wp_load_translations_early();
line 68~ wp_die() 함수 실행
여기서 die() or exit() 함수를 피하고 재정의한 함수를 씀
4. wp_config.php
db 접속 정보 및 API KEY 셋팅 , 5.wp-settings.php호출
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
<?php
define('DB_NAME', 'XX');
define('DB_USER', 'ADNAM');
define('DB_PASSWORD', 'XX');
define('DB_HOST', 'XX');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');
define('AUTH_KEY', 'ㅅㅅㅅ');
define('SECURE_AUTH_KEY', 'ㅍㅍㅍ');
define('LOGGED_IN_KEY', 'ㅅㅅㅅ');
define('NONCE_KEY', 'ㄹㄹㄹ');
define('AUTH_SALT', 'ㄷㄷㄷ');
define('SECURE_AUTH_SALT', 'ㅋㅋㅋ');
define('LOGGED_IN_SALT', 'ㅎㅎㅎ');
define('NONCE_SALT', 'ㅊㅊㅊ');
$table_prefix = 'wp_';
define('WP_DEBUG', false);
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'wp-settings.php');
|
line 4~14 DB server 에 관련된 변수를 생성
line 16~30 인증키를 변수에 셋팅
line 40 5.wp-settings.php 실행
5. wp-setings.php
워드프레스 설정 메인 php (설정값 가져오는건데 다 보자니 의욕이 떨어짐)
line 06, 08 6.load.php 와 7. default-constants.php 를 로드
6. load.php
여기서 @internal 같은 어노테이션이 나오는데
php에서 @는 문법에서 사용시 에러 메시지를 숨기는기능을
아래 링크에서와 같이 지정된 몇개의 단어와 같이 사용하면
phpDocument 를 이용한 문서생성를 하기위한 문법이라고 함.
http://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_tags.pkg.html
------------------------------
작성중 참고한 문헌 및 사이트
1. 블로그 igotit : http://igotit.tistory.com/23
(워드프레스 생성부터 테마, 플러그인 개발까지 총 망라하여 정리됨 강력추천)
ps. 나도 영어만 가능했으면 .......
*** 내용 종합
1. 테마에 관련된 내용은
wp-content / theme / ~테마명~/ index.php 부터 시작한다.
css 는 같은 폴더의 style.css 를 수정한다.
2. 메인 화면에서 컨텐츠 불러올때 조건 거는방법은
해당 테마이하에서 xxx.php 파일
query_posts()
pre_get_posts() 함수를 봐라
3. 컨텐츠 게시물에 대한 파일은
single.php 에서 시작함.
index.php 처럼 header, footer 등을 끼워넣어줘야 구성이 비슷해짐
댓글 없음:
댓글 쓰기