2016-09-04 7 views
3

을 미리 보여줍니다. 각 집합마다 12 개의 용어가 있습니다.제한 수는 I 2 분류가 <strong><code>product_cat</code></strong> 및 <code>tvshows_cat</code></strong><strong>설정이

제품에는 최대 12 개의 용어가 포함될 수 있습니다. (단 2 개 세트는 동시에 제공되지 않음).

나는 제품 페이지의 용어 목록을 표시하려면이 코드를 사용

$cats = get_the_term_list($post->ID, 'product_cat', '', ' ', ''); 
$tvcats = get_the_term_list($post->ID, 'tvshows_cat', '', ' ', ''); 

if (!empty($cats)){ 
    echo strip_tags($cats, ' '); 
}elseif(!empty($tvcats)){ 
    echo strip_tags($tvcats, ' '); 
} 

결과는 다음과 같습니다

액션, 드라마, 모험, 전기, 애니메이션

문제는 일부 경우 sp가 충분하지 않다는 것입니다. 에이스는 모든 용어를 보여줍니다.

용어의 수를 2로 제한해야합니다.

질문 :

어떻게 두에 적용되는 용어의 수를 제한 할 수 있습니다?

감사

답변

5

는 대신, get_the_terms()을 사용해야 get_the_term_list() 기능을 사용하여 당신에게 줄 것이다 직접 용어의 배열이 get_the_term_list()가 자신을 get_the_terms()를 사용하여 그대로(당신이에 보면 객체 함수의 소스 코드).

그럼 당신은 당신이 (내가 내파를 사용하지 않습니다 원하는 것을 얻을 수있는 사용자 정의 기능을 구축 할 수 있음() 함수 또는 우리는이 용어를 원하는 다른 하나 개 PHP 함수.)

참고 : (

// This function goes first 
function get_my_terms($post_id, $taxonomy){ 
    $cats = get_the_terms($post_id, $taxonomy); 

    foreach($cats as $cat) $cats_arr[] = $cat->name; 

    if (count($cats_arr) > 1) $cats_str = $cats_arr[0] . ', ' . $cats_arr[1]; // return first 2 terms 
    elseif (count($cats_arr) == 1) $cats_str = $cats_arr[0]; // return one term 
    else $cats_str = ''; 

    return $cats_str; 
} 

이 코드는 활성 자식 테마의 function.php 파일에 간다 : 당신은

그래서 코드가 될 것입니다 여기 strip_tags() 기능이 필요하지 않습니다 또는 테마) 또는 모든 플러그인 파일 ...

다음은 코드입니다.

$cats = get_my_terms($post->ID, 'product_cat'); 
$tvcats = get_my_terms($post->ID, 'tvshows_cat'); 

// Displaying 2 categories terms max 
echo $cats . $tvcats; 

이 코드는 PHP 템플릿 파일에 간다


- 갱신 -(저자 코멘트 관련)

또는 기능이없는, 코드 다음과 같이됩니다 :

// Product categories 
$cats = get_the_terms($post->ID, 'product_cat'); 

foreach($cats as $cat) $cats_arr[] = $cat->name; 

if (count($cats_arr) > 1) $cats_str = $cats_arr[0] . ', ' . $cats_arr[1]; // return first 2 terms 
elseif (count($cats_arr) == 1) $cats_str = $cats_arr[0]; // return one term 
else $cats_str = ''; 

// TV shows categories 
$tvcats = get_the_terms($post->ID, 'tvshows_cat'); 

foreach($tvcats as $tvcat) $tvcat_arr[] = $tvcat->name; 

if (count($tvcat_arr) > 1) $tvcats_str = $tvcat_arr[0] . ', ' . $tvcat_arr[1]; // return first 2 terms 
elseif (count($tvcat_arr) == 1) $tvcats_str = $tvcat_arr[0]; // return one term 
else $tvcats_str = ''; 

// The Display of 2 categories 
echo $cats_str . $tvcats_str; 

이 코드는 당신의 PHP 템플릿에 간다

이 코드는 테스트 및 작품 파일.

+0

우리는 템플릿 코드 만 사용할 수 있습니까? 어떻게 함수가 아닌 템플릿에서만 코드를 사용할 수 있습니까? –

+0

예, 사용자 지정 기능이없는 대체 버전을 사용하는 것이 더 좋습니다. – LoicTheAztec

3
내가 최종 출력을 가정하고

는 쉼표로 구분 된 문자열 - 액션, 드라마, 모험, 전기, 애니메이션.

$items = "item1, item2, item3, item4"; 

$filter = explode(',', $items); 

for($i=0; $i<2; $i++) { 
    echo $filter[$i]; 
} 

이 문제에 대한 array_slice() 당신은 또한 다음과 같은

function display_limited_terms($items) { 
     $filter = explode(',', $items); 

     for($i=0; $i<2; $i++) { 
      echo $filter[$i]; 
     } 
    } 


    $cats = get_the_term_list($post->ID, 'product_cat', '', ' ', ''); 
    $tvcats = get_the_term_list($post->ID, 'tvshows_cat', '', ' ', ''); 

    if (!empty($cats)){ 

     display_limited_terms(strip_tags($cats, ' ')); 
    } 

    elseif(!empty($tvcats)) { 

     display_limited_terms(strip_tags($cats, ' ')); 
    } 
+0

어떻게 사용할 수 있습니까? 어디에 넣을 까? –

4

당신이 위에 제공된 코드를 수있는 대체 explode()를 사용해보십시오 수있는 두 개의 항목을 표시합니다. 예를 들어

:

function display_limited_terms($items){ 
    $filter = explode(',', $items); 
    $a = array_slice($filter, 0, 2); 
    foreach ($a as $b) { 
     echo $b; 
    } 
} 


$cats = get_the_term_list($post->ID, 'product_cat', '', ' ', ''); 
$tvcats = get_the_term_list($post->ID, 'tvshows_cat', '', ' ', ''); 

if (!empty($cats)) { 

    display_limited_terms(strip_tags($cats, ' ')); 
} elseif (!empty($tvcats)) { 

    display_limited_terms(strip_tags($cats, ' ')); 
} 
+0

komak khasti bego. –

+0

function.php를 사용하고 싶지 않습니다. –

+0

이 문제에 대해서는 function.php를 사용하지 마십시오. 템플릿 파일에 최상위 코드를 추가하기 만하면됩니다. –