2014-12-29 3 views
1

과 일치하는 임의의 게시물을 워드로 표시합니다. 페이지 매김을 통해 일관된 임의의 게시물에 대한 쿼리를 만들 수 있기를 바랍니다. 'wp_query'를 사용하는 sevral 설명을 찾았지만 'get_posts'를 도와 줄 솔루션을 찾고 있습니다.내 메인 페이지의 페이지 번호

이 내가 지금까지받은 코드는 다음과 같습니다

foreach ($categories as $category) { 
    global $post; 
       $myposts = get_posts(array(
        'post_type' => 'portfolio', 
        'orderby'  => 'rand', 
        'posts_per_page' => 1, 
        'numberposts' => -1, // get all posts. 
        'tax_query'  => array(
         array(
          'taxonomy' => 'portfolio_categories', 
          'field'  => 'id', 
          'terms'  => $category->cat_ID 
         ) 

        ) 
       )); 
       foreach ($myposts as $post){ 
        setup_postdata($post); 

// stuff of posts 
} 
      wp_reset_postdata(); } 
+0

그건 효과가 없을 것입니다. 초기 페이지로드시 한 번만 무작위 쿼리를 작성한 다음 세션에 결과를 저장해야합니다. 그런 다음 이러한 저장된 결과를 페이지 매김에 사용할 수 있습니다. – jeroen

+0

코멘트 주셔서 감사합니다. 어떤 모범이 있습니까? – user3003106

답변

0

get_posts()는 뒤에서 WP_Query() 클래스를 사용합니다. 따라서 WP_Query()으로 수행 할 수있는 작업은 문서화 된 예외가 거의없고 get_posts()으로 처리 할 수 ​​있습니다. 쉽게 WP_Query() 클래스는 임의 게시물의 일관된 당겨 할 수 있도록 내장 된 MySQL의 RAND(n) 시드 값의 사용을 지원, 워드 프레스 4.5과 같이 posts_orderby 필터를 통해 함께이 문제를 해결할 수 있지만

. 예를 들어

:만큼 1234은 각 쿼리에 전달되는

$posts = get_posts(array(
    'post_type' => 'portfolio', 
    'orderby'  => 'rand(1234)', 
    'posts_per_page' => 1, 
    'numberposts' => -1, // get all posts. 
    'tax_query'  => array(
     array(
      'taxonomy' => 'portfolio_categories', 
      'field'  => 'id', 
      'terms'  => $category->cat_ID 
     ) 

    ) 
)); 

, 무작위 게시물의 동일한 세트를, 따라서 쉽게 페이지를 매기 할 수 있도록 반환됩니다. 새 값 (예 : 5678)을 전달하면 임의의 집합이 변경됩니다. 생각 프로세스는 각 사용자 세션마다 다른 임의의 정수를 저장하는 것입니다.

MySQL RAND(n) 기능이 작동하는 방법에 대한 자세한 내용은 docs을 참조하십시오.

관련 문제