상세 컨텐츠

본문 제목

워드프레스 테이블내용을 일반PHP로 출력하기01_리스트화면

PHP(Class)

by 김일국 2017. 8. 5. 16:29

본문

워드프레스를 이용하지 않고, 일반PHP로 워드프레스 게시물 내용을 불러올 경우에 사용되는 방법입니다.

이번 포스트는 리스트부분만 포함됩니다.

워드프레스URL: http://globalwing.co.kr/wordpress/?board=photo

결과확인URL: http://globalwing.co.kr/time-space/mobile/wp/list.html


위 list.html의 소스는 아래와 같습니다.

(단 조건은 타임스페이스 프레임웍을 사용할때의 소스 입니다.

프레임웍을 사용하지 않더라도 아래 소스의 핵심은

//아래 쿼리에 사용되는 워드프레스 테이블 명 wp_posts(게시물리스트), wp_terms(게시판ID)
//wp_term_relationships(게시판ID와 게시물의 관계), wp_postmeta(게시물과 첨부파일의 관계)

위 관계를 쿼리에 잘 이용하는 것입니다. 쿼리만 주의깊게 보세요!)

<?php
session_start();
define('DS', DIRECTORY_SEPARATOR);
define('GPLDIR', $_SERVER['DOCUMENT_ROOT'].DS.'time-space/manage');
include_once GPLDIR . '/core/config/default.php';
include_once GPLDIR_CLASS . '/GPLbase.class.php';
$GPLbase = new GPLmember($GPLcookie_domain, $GPLurl_default, $GPLpath_default);//상속받은 개체 멤버클래스 사용
$GPLdb5 =& $GPLbase->db5;//db 커넥션 오브젝트생성 MYSQL5
//아래 쿼리에 사용되는 워드프레스 테이블 명 wp_posts(게시물리스트), wp_terms(게시판ID)
//wp_term_relationships(게시판ID와 게시물의 관계), wp_postmeta(게시물과 첨부파일의 관계)
?>
<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8" />
 <meta name="viewport" content="height=device-height,width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no;" />

 <title>Time-Space Web Service</title>
 <link rel="stylesheet" type="text/css" href="/time-space/mobile/css/reset.css">
 <link rel="stylesheet" type="text/css" href="/time-space/mobile/css/style.css">
</head>
<body>
<?php
//게시판 공통변수 항상 페이지 상단에 위치
$MODE = $_REQUEST['MODE'];
$GUBN = $_REQUEST['GUBN'];
$SEARCH = $_REQUEST['SEARCH'];
$BOARD_ID = $_REQUEST['BOARD_ID'];
$BOARD_SEQ = $_REQUEST['SEQ'];
$now_page = $_REQUEST['now_page'];
//메뉴 변수
switch ($BOARD_ID) { //photo
 case 'photo'  : $BOARD_ID='14'; $title='사진게시판';break;
 default   : $BOARD_ID='14'; $title='사진게시판';break;
}
?>
<?php
 //페이징설정 넘버링 시작
 $now_page = $_GET['now_page'];
 //================ pageing 계산 code ======================================
 // 1 - 현재 페이지 설정
 if($now_page == ""){
  $now_page = 1;
 }
 // 2 - 블럭크기 설정
 if($block_size == ""){
  $block_size = 7;
 }
 // 3 - 각 블럭의 start 페이지 값을 설정한다
 if($now_page % $block_size == 0){
  $start_num = abs($now_page - $block_size + 1);    // 현재 페이지가 블럭의 마지막 페이지 일 경우 해당 블럭의 시작 페이지 번호를 정한다
 }else{
  $start_num = floor($now_page/$block_size)*$block_size + 1; // 현재페이지가 블럭의 마지막 페이지가 아닐경우 시작 페이지를 지정한다
 }
 // 4 - 각 블럭의 end 페이지 값을 설정한다
 $end_num = $start_num + $block_size - 1;
 // 5 - 카운터 쿼리호출 (마지막 페이지에서 존재하지 않는 페이지 숫자를 없애주기 위해 토탈레코드 숫자를 구한다 )
 //SELECT * from wp_posts where ID IN (SELECT object_id FROM `wp_term_relationships` where term_taxonomy_id = 14) order by ID desc
  $SQL = "SELECT";
  $SQL .= " COUNT(ID) AS COUNT";
  $SQL .= " FROM wp_posts";
  $SQL .= " WHERE ID IN (SELECT object_id FROM wp_term_relationships where term_taxonomy_id = $BOARD_ID)";
  $SQL .= " AND (post_title LIKE '%".$SEARCH."%'";
  $SQL .= " OR post_content LIKE '%".$SEARCH."%')";
  $result = $GPLdb5->GPLquery_fetch_assoc_one($SQL);
  if($result){
   $total_rec = $result['COUNT'];
  }
 // 6 - 한페이지당 보여줄 레코드 수 설정
 $recnum_per_page = 4;
 // 7 - 불러오기 쿼리문에서 시작레코드 숫자 지정
 if($now_page == 1){
  $st_limit = 0;
 }else{
  $st_limit = $now_page * $recnum_per_page - $recnum_per_page;
 }
 // 8 - 이전 블럭 설정
 $before_block = abs($start - 1);
 // 9 - 다음 블럭 설정
 $next_block = $end_num + 1;
?>
<article id="container">
 <h2><a href="./list.html?BOARD_ID=$BOARD_ID" title=""><span>포토게시판</span></a></h2>
 <section class="main">
 <ul>
 <?php
  //셀렉트
 $SQL = "SELECT";
 $SQL .= " ID as SEQ,post_title,post_content";
 $SQL .= " FROM wp_posts";
 $SQL .= " WHERE ID IN (SELECT object_id FROM wp_term_relationships where term_taxonomy_id=$BOARD_ID)";
 $SQL .= " AND (post_title LIKE '%".$SEARCH."%'";
 $SQL .= " OR post_content LIKE '%".$SEARCH."%')";
 $SQL .= " ORDER BY ID DESC LIMIT $st_limit , $recnum_per_page";
 $result = $GPLdb5->GPLexcute_query($SQL);
 $i=0;
 if($result){
  while($ROW = mysql_fetch_array($result)) {
  //썸네일 첨부파일 갯수
   $SQL = "SELECT";
   $SQL .= " COUNT(meta_id) AS FILE_CNT";
   $SQL .= " FROM wp_postmeta";
   $SQL .= " WHERE post_id = '".$ROW['SEQ']."'";
   $SQL .= " AND meta_key = 'gnu_bbs_file'";
   $FILE_ROW = $GPLdb5->GPLquery_fetch_assoc_one($SQL);
   $FILE_CNT = $FILE_ROW['FILE_CNT'];
 ?>
 <li>
      <a href="/time-space/mobile/wp/view.html?BOARD_ID=<?=$BOARD_ID?>&SEQ=<?=$ROW['SEQ']?>">
  <span>●</span> <?=cut_str($ROW[post_title],58,'...')?><br/>
   <?php
   //첨부파일 셀렉트
    /* 원래 썸네일 파일 자료에서 추출해야 하지만, 힘들어서 주석처리 그냥 이미지 추출로 대체
    $SQL = "SELECT";
    $SQL .= " meta_value";
    $SQL .= " FROM wp_postmeta";
    $SQL .= " WHERE post_id IN (";
    $SQL .= " SELECT meta_value from wp_postmeta WHERE post_id = '".$ROW['SEQ']."'";
    $SQL .= " AND meta_key = '_thumbnail_id'";
    $SQL .= " )";
    $SQL .= " AND meta_key='_wp_attachment_metadata'";
    $fileresult= $GPLdb5->GPLexcute_query($SQL);
   */
   $SQL = "SELECT";
    $SQL .= " guid";
    $SQL .= " FROM wp_posts";
    $SQL .= " WHERE ID IN (";
    $SQL .= " SELECT meta_value from wp_postmeta WHERE post_id = '".$ROW['SEQ']."'";
    $SQL .= " AND meta_key = '_thumbnail_id'";
    $SQL .= " )";
    $fileresult= $GPLdb5->GPLquery_fetch_assoc_one($SQL);
   if($fileresult){
   ?>
                      <span class="visual"><img src="<?=$fileresult['guid']?>" style="vertical-align:bottom;"><?=($FILE_CNT>1)?"(+".(($FILE_CNT)-1).")":"";?></span>
   <?php } ?>
  </a>
    </li>
 <?php $i++;
            }
       }
 ?>
 </ul>
 </section>
 <!--paging시작-->
 <div id="paging-wrap">
 <div id="board_list_paging">
  <ul>
   <?
   //================ pageing 출력 10번~12번 code ======================================
     if($start_num > 1){  // 10 - 이전 블럭 링크?>
     <a href="list.html?now_page=<?=$before_block?>&GUBN=<?=$GUBN?>&SEARCH=<?=$SEARCH?>&BOARD_ID=<?=$BOARD_ID?>" onFocus="blur()">
     <li>Prev</li>
     </a>
     <? } ?> 
    <?
     for($i=$start_num; $i<=$end_num; $i++){ // 11 - 페이지 링크
    if(ceil($total_rec/$recnum_per_page) >= $i){
     if($now_page == $i){ ?>
     <a href="#"><li class="selected_page">
     <?=$i?>
     </li></a>
      <?    }else{ ?>
     <a href="list.html?now_page=<?=$i?>&GUBN=<?=$GUBN?>&SEARCH=<?=$SEARCH?>&BOARD_ID=<?=$BOARD_ID?>" onFocus="blur()">
     <li><?=$i?></li>
     </a>      
    <?            }
    }
     }  ?> 
    <?
     if($end_num * $recnum_per_page < $total_rec){  // 12 - 다음 블럭 링크?>
     <a href="list.html?now_page=<?=$next_block?>&GUBN=<?=$GUBN?>&SEARCH=<?=$SEARCH?>&BOARD_ID=<?=$BOARD_ID?>" onFocus="blur()">
     <li>Nex<li>
     </a>
   <?  }
   //====================================================================
   ?>
   </ul>
 </div>
 </div>
 <!--paging끝-->
 <!--검색영역시작-->
 <span class="clear10"></span>
 <div id="board_list_search">
  <form method="get" name="form_search" id="form_search" action="">
  <select name="GUBN" id="GUBN" class="type-select">
   <option selected="selected" value="1">ALL</option>
   <option value="2">subject</option>
   <option value="3">content</option>
  </select>
  <input type="text" name="SEARCH" id="SEARCH" size=15 class="type-text" value="">
  <input type="hidden" name="BOARD_ID" id="BOARD_ID" value="<?=$BOARD_ID?>">
  <button type="submit" class="type-submit">Search</button>
  </form>
 </div>
 <span class="clear10"></span>
<!--검색영역끝-->
</article>
</body>
</html>

관련글 더보기

댓글 영역