2013-10-01 2 views
0

게시물의 모든 데이터를 가져 오는 데 문제가 있습니다. 나는 여러 가지 일을 시도했지만 그 일을 할 수는 없습니다. 내가 무엇을 할 수 있을지?특정 카테고리의 게시물 데이터를 모두 variabele로 가져 오기

function wptGetPostData($sGategory, $sField = null, $iIndex = null) 
{ 
global $WPT_POST_DATA, $wp_query; 

if(!is_array($WPT_POST_DATA)) 
{ 
    var_dump($sGategory); 
    $WPT_POST_DATA = array(); 
    $oOpt = array(
       'category_name' => $sGategory, // get posts by category name 
      'posts_per_page' => -1 // all posts 
      ); 

    query_posts($oOpt); 
    // var_dump(have_posts()); 
    while(have_posts()) 
    { 
    var_dump('loop'); 
    $WPT_POST_DATA[] = $wp_query->get_post_format(); //(array('echo'=>false)); 
    //echo the_title(); 
    //echo the_content(); 
    } 
    //var_dump($wp_query->posts); die; 
    wp_reset_query(); 
} 
var_dump($WPT_POST_DATA); 

// other code here ... 

return null; 
} 

$WPT_POST_DATA는 캐시이고 모든 게시물 (최대 5 요소)를 포함해야합니다 여기

내가 포스트 데이터를 얻기 위해 쓴 기능입니다. 누군가가 이걸 도와 줄 수 있습니까?

답변

0

알 수 있습니다.

function suIsValidString(&$s, &$iLen = null, $minLen = null, $maxLen = null) 
{ 
    if(!is_string($s) || !isset($s{0})) 
    { return false; } 

    if($iLen !== null) 
    { $iLen = strlen($s); } 

    return (($minLen===null?true:($minLen > 0 && isset($s{$minLen-1}))) && 
      $maxLen===null?true:($maxLen >= $minLen && !isset($s{$maxLen}))); 
} 


// -- ** -- Template functions 

function wptGetCategoryIdByName($sName) 
{ 
$oTerm = get_term_by('name', $sName, 'category'); 
return (is_object($oTerm) && isset($oTerm->term_id))?$oTerm->term_id:null; 
} 

function wptGetPostData($sCategory, $sField = null, $iIndex = null) 
{ 

global $WPT_POST_DATA; 
$bCategory = (suIsValidString($sCategory)); 
$bIsInit  = (is_array($WPT_POST_DATA)); 
$uIndex  = $bCategory?$sCategory:0; 
$sFieldName = (suIsValidString($sField)?$sField:'content'); 

if(!$bIsInit || !isset($WPT_POST_DATA[$uIndex])) 
{ 
    if(!$bIsInit) 
    { $WPT_POST_DATA = array(); } 

    // wp_reset_query(); 
    //$category_query = new WP_Query(array('cat' => wptGetCategoryIdByName($sCategory))); 
    $bValid = true; 
    $iCategory = null;  
    if($bCategory) 
    { 
    $iCategory = wptGetCategoryIdByName($sCategory); 
    $bValid = (is_numeric($iCategory) && $iCategory >= 0); 
    if(!$bValid) 
     { $iCategory = null; } 
    }  

    $sQuery = 'numberposts=-1'.(($iCategory !== null)?('&cat='.$iCategory):null); 
    $WPT_POST_DATA[$uIndex] = $bValid?get_posts($sQuery):array(); 
    /* 
    if($bCategory) 
    { 
     var_dump($uIndex); 
     var_dump($WPT_POST_DATA[$uIndex]); } 
    */ 
    if(!is_array($WPT_POST_DATA[$uIndex])) 
    { $WPT_POST_DATA[$uIndex] = array(); } 
} 

if($sFieldName === 'count') 
    { 
    //var_dump($WPT_POST_DATA[$uIndex]); die; 
    return count($WPT_POST_DATA[$uIndex]); 
} 

$iAutoIndex = 0; 
if(!isset($WPT_POST_DATA[$uIndex]['autocounter'])) 
    { $WPT_POST_DATA[$uIndex]['autocounter'] = $iAutoIndex; } 
else { $iAutoIndex=(++$WPT_POST_DATA[$uIndex]['autocounter']); } 
if(!is_numeric($iIndex)) 
    { $iIndex = $iAutoIndex; } 



$uResult = null; 
// var_dump($WPT_POST_DATA[$uIndex][$iIndex]->post_content); 
if(isset($WPT_POST_DATA[$uIndex][$iIndex]) && is_object($WPT_POST_DATA[$uIndex][$iIndex])) 
{ 
    $sPostPrefixName = 'post_'.$sFieldName; 
    if(isset($WPT_POST_DATA[$uIndex][$iIndex]->$sPostPrefixName)) 
    { $uResult = &$WPT_POST_DATA[$uIndex][$iIndex]->$sPostPrefixName; } 
    elseif(isset($WPT_POST_DATA[$uIndex][$iIndex]->$sFieldName)) 
    { $uResult = &$WPT_POST_DATA[$uIndex][$iIndex]->$sFieldName; } 
} 

if(suIsValidString($uResult)) 
{ 
    $uResult = utf8_decode($uResult); 
    suSpecialCharsToHtml($uResult); 
} 
//var_dump($uResult); 
return $uResult; 
} 

사용법 : 그것은

$sMyString = wptGetPostData('mycat', 'content'); 
    var_dump($sMyString); 

입니다!

1

이 시도 :

//  1) Through Title: 
//  The function is case insensitive, so we can use lower case 
$my_post = get_page_by_title('hello world', OBJECT, 'post'); 

<h1><?php echo get_the_title($my_post->ID); ?></h1> 
echo $my_post->post_content; 

//  OR to Avoid The Pitfall 
echo apply_filters('the_content', $my_post->post_content); 

//  2) Through Category ID: 
<?php query_posts('cat=3&posts_per_page=1'); ?> 

<?php while (have_posts()) : the_post(); ?> 
    <?php the_content(); ?> 
     <?php endwhile; ?> 

<?wp_reset_query(); ?> 

감사합니다.

+0

대답을 감사하지만 내가 원하는 것은 아닙니다. 나는 Wordpress에서 php4 스파게티 스타일의 코딩을 정말 싫어한다 (그러나 클라이언트 용 Wordpress를 사용할 필요가있다). 그리고 전체 템플릿을 사용하여 출력을 포맷한다. 나는 이것을 변수에 넣기를 원하지만, 문서는 이것을 어떻게하는지 명확하지 않다. – Codebeat

+0

변수를 통해 어떤 것을 사용 하시겠습니까? 당신은 카테고리로 게시물을 만들어야합니다. 게시물의 모든 것을 얻는 쉬운 방법이라고 생각합니다. –

관련 문제