2017-10-27 2 views
0

현재 게시물과 동일한 카테고리에있는 게시물을 표시하려고합니다. 고객 블로그가 설정되는 방식은 모두 "블로그"카테고리를 공유한다는 것입니다. 관련 게시물은 모든 게시물에 대해 동일한 내용을 보여줍니다.Wordpress : 카테고리별로 관련 게시물을 가져 오지만 기본 카테고리는 무시하십시오.

<?php $related = get_posts(array( 
       'category__in' => wp_get_post_categories($post->ID), 
       'numberposts' => 4, 
       'post__not_in' => array($post->ID) 
       )); 

      ?> 

나는 차 카테고리 (블로그)하지 않은 게시물을 얻을 필요가있다. 나는 "cateogry__not__in"을 할 수 없다. 왜냐하면 모든 것을 배제 할 것이기 때문이다.

+1

블로그 카테고리가 포함되지 않도록'wp_get_post_categories ($ post-> ID) '를 필터링하는 방법은 무엇입니까? – janh

+0

이 문제를 해결하도록 도와 줄 수 있습니까? 카테고리 블로그가있는 게시물을 숨기고 있지 않은지 확인해야합니다. 카테고리가 모두 있기 때문입니다. – corporalpoon

+0

'category__in '=> array_diff (wp_get_post_categories ($ post-> ID), array (5)),'.... (5는 블로그 카테고리의 ID입니다 ....) –

답변

0

wp_term_query's docs에 따르면 매개 변수를 추가하여 블로그를 제외 할 수 있습니다 (예 : 변경 당신의 category__in$blogid 블로그 카테고리의 용어 아이디 인과

'category__in' => wp_get_post_categories(
    $post->ID, 
    array(
     "exclude" => array($blogid) 
    ) 
), 

합니다. 또한 용어와 하위 용어를 제외하기 위해 exclude_tree을 제공하기 때문에 블로그 카테고리 만 달성하고 제외하고자하는 바를 정확히 수행 할 것이라고 생각합니다.

+0

불행히도, 나는 여전히 모든 게시물 (single.php)에 동일한 4 개의 게시물을 받고있는 것 같습니다. 블로그를 제외하고 다른 카테고리를 찾지 않습니다. 도움을 주셔서 감사합니다. – corporalpoon

+0

wp_get_post_categories-call은 무엇을 반환합니까? $ blogid를 블로그 카테고리의 ID로 대체 했습니까? – janh

0

좋아, 내가 방법을 찾은 것 같아. 모든 것이 내가 원하는 방식으로 기능하는 것처럼 보입니다.

$categories = get_the_category(); 
$category_filter = array(); 

    foreach ($categories as $category) { 
    if ($category->name != "Blog") { 
     array_push($category_filter, $category->term_id); 
    } 
    } 



    <?php $related = get_posts(array( 
     'category__in' => $category_filter, 
      'numberposts' => 4, 
      'post__not_in' => array($post->ID), 
      'orderby' => 'rand' 
     )); 

    ?> 
관련 문제