WordPress 3.1의 게시물 형식으로 쿼리하는 방법


10

게시물 형식이 'quote'인 모든 게시물을 쿼리하려고합니다. 내 함수에 포스트 형식을 추가했습니다.

add_theme_support( 'post-formats', array( 'image', 'video', 'gallery', 'quote' ) );

관리자의 게시물 형식으로 'quote'를 선택했습니다. Taxonomy_Parameters 아래의 마지막 예 는 'quote'형식의 게시물을 표시하는 방법을 보여 주지만 테마에서 실행하면 게시물이 반환되지 않습니다. 코드는 다음과 같습니다.

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post-format',
      'field' => 'slug',
      'terms' => 'post-format-quote'
    )
  )
);
query_posts( $args );

모든 게시물과 장소를 쿼리 할 때

echo get_post_format();

루프에서 프런트 엔드에 'quote'이라는 단어를 반환합니다. 또한 var_dump () 쿼리를 수행하면 배열에 게시 형식에 대한 내용이 표시되지 않습니다.

게시물 형식으로 쿼리 할 수 ​​있는지 아는 사람이 있습니까? 그렇다면 어떻게?

편집-Bainternet의 답변 아래 5 개의 주석 참조 : 이것은 형식 유형 따옴표를 반환하려고하는 새로운 설치의 20 가지 테마 중 index.php에있는 코드입니다. 'quote'대신 'no'를 반환합니다. 내가 바꿔야 할 것을 볼 수 있습니까?

get_header(); ?>
<div id="container">
  <div id="content" role="main">
    <?php $args = array(
      'tax_query' => array(
        array(
          'taxonomy' => 'post-format',
          'field' => 'slug',
          'terms' => array('quote')
        )
      )
    );
    query_posts( $args );
    if ( have_posts() ) : while ( have_posts() ) : the_post();
      echo get_post_format();
    endwhile; else:
      echo 'no';
    endif;
    wp_reset_query();      
    ?>
  </div><!-- #content -->
</div><!-- #container -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

편집 2-WordPress Codex가 변경되었으며 Taxonomy Parameters의 부분은 Google 캐시에서만 발견됩니다.

편집 3-최종 작업 코드

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post_format',
      'field' => 'slug',
      'terms' => 'post-format-quote'
    )
  )
);
query_posts( $args );

첫 번째 편집에서 스물 열 편집은 ...

get_header(); ?>
<div id="container">
  <div id="content" role="main">
    <?php $args = array(
      'tax_query' => array(
        array(
          'taxonomy' => 'post_format',
          'field'    => 'slug',
          'terms'    => 'post-format-quote'
        )
      )
    );
    query_posts( $args );
    if ( have_posts() ) : while ( have_posts() ) : the_post();
      the_title();
      echo get_post_format();
      echo '<br />';
    endwhile; else:
      echo 'no';
    endif;
    wp_reset_query();      
    ?>
  </div><!-- #content -->
</div><!-- #container -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

답변:


7

이 코드는 잘못되었습니다! 당신은

'taxonomy' => 'post-format'

그러나 실제로 다음이 필요합니다.

'taxonomy' => 'post_format'

밑줄이 없으면 쿼리가 유효하지 않습니다. 몇 시간 동안 머리카락을 뽑은 후 WordPress 3.1 설치에서 이것을 테스트했습니다.

희망이 도움이됩니다 !!


그것을 잡아 주셔서 대단히 감사합니다. 코덱스 페이지에서 직접 원본 코드를 복사했다고 맹세 할 수 있습니다. (어쩌면 한 번에 잘못되었을 수도 있습니다.) 지금 작동합니다. post_format으로 변경하면서 'terms'=> 'quote'를 'terms'=> 'post-format-quote'로 다시 변경해야했습니다. 다른 관심있는 사람은 최종 코드에 대한 원본 게시물의 편집 3을 참조하십시오.
PNMG

물론 내가 도와 줄 수있어서 기쁘다. :)
Jared White

2

tax_query당신이 둘 필요가 있도록 "용어"배열을 받아 post-format-quote이 같은 배열 :

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post-format',
      'field' => 'slug',
      'terms' => array('post-format-quote')
    )
  )
);
query_posts( $args );

누구든지 이것을 시도하고 작동하도록했습니다. 배열 부분을 추가했는데 여전히 아무것도 반환하지 않았습니다. post-format-quote가 올바른 슬러그를 배열에 넣었습니까?
PNMG

"포스트"처럼 포스트 포맷을 넣을 필요는없고 포스트 포맷을 인용하지 않아도됩니다
Bainternet

add_theme_support 함수에서 인용 된 것이기 때문에 'terms'=> array ( 'quote')을 넣어야합니까? 나는 그것을 시도했다. 아직 운이 없다.
PNMG

well 'terms'=> array ( 'quote')는 저에게 작동합니다. 'echo get_post_format ();' 그리고 당신이 무엇을 참조하십시오
Bainternet

좋아, 반향하면 '인용'을 얻습니다. 절망의 순간에 나는 모든 플러그인을 끄고 기본 20 테마로 다시 전환하고 3 개의 테스트 게시물을 만들었습니다. 하나는 견적 형식입니다. add_theme_support 호출에 인용문을 추가하기 위해 functions.php 파일을 업데이트하고 다음 코드를 사용하도록 index.php를 업데이트했습니다. [원래 게시물 맨 아래 편집 참조]
PNMG
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.