Bagaimana saya meminta format posting di WordPress 3.1

10

Saya mencoba untuk meminta semua posting dengan format posting 'kutipan'. Saya telah menambahkan format posting ke functions.php saya dengan

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

Saya telah memilih 'kutipan' sebagai format untuk posting di admin. Contoh terakhir di bawah Taxonomy_Parameters menunjukkan bagaimana menampilkan posting yang memiliki format 'kutipan' tetapi ketika saya menjalankannya dalam tema saya tidak ada posting yang dikembalikan. Ini kodenya:

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

Ketika saya hanya menanyakan semua posting dan tempat

echo get_post_format();

dalam lingkaran itu mengembalikan kata 'kutipan' di front-end. Juga, ketika saya var_dump () permintaan saya tidak melihat apa pun dalam array tentang format posting.

Apakah ada yang tahu jika dimungkinkan untuk melakukan query dengan format posting? Kalau begitu bagaimana?

EDIT - Lihat 5 komentar di bawah jawaban Bainternet: Ini adalah kode yang ditemukan di index.php dari tema dua puluh instalasi baru yang mencoba mengembalikan kutipan jenis format. Saya mengembalikan 'tidak' alih-alih 'kutipan'. Bisakah Anda melihat sesuatu yang harus saya ubah.

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(); ?>

EDIT 2 - Tampaknya Codex WordPress sekarang telah berubah dan porsi Parameter Taksonomi hanya ditemukan di cache Google.

EDIT 3 - KODE KERJA FINAL

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

Dua puluh sepuluh hasil edit dari edit pertama adalah ...

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(); ?>
PNMG
sumber

Jawaban:

7

Kode ini salah! Kamu punya

'taxonomy' => 'post-format'

Tapi itu benar-benar perlu:

'taxonomy' => 'post_format'

Tanpa garis bawah, kueri akan tidak valid. Saya baru saja menguji ini pada instalasi WordPress 3.1 saya setelah mencabut rambut saya selama berjam-jam.

Semoga itu bisa membantu !!

Jared White
sumber
Terima kasih banyak sudah menangkapnya. Saya bersumpah bahwa saya menyalin kode asli langsung dari halaman Codex. (Mungkin itu salah di sana juga pada satu waktu.) Ini berfungsi sekarang. Seiring dengan mengubahnya ke post_format, saya juga perlu mengubah 'terms' => 'quote' kembali ke 'terms' => 'post-format-quote'. Untuk orang lain yang berminat silakan lihat Edit 3 dari posting asli untuk kode akhir.
PNMG
Tentu, senang saya bisa membantu. :)
Jared White
2

dalam tax_query"terms" menerima array sehingga Anda perlu memasukkan post-format-quotearray seperti ini:

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post-format',
      'field' => 'slug',
      'terms' => array('post-format-quote')
    )
  )
);
query_posts( $args );
Bainternet
sumber
Adakah yang mencoba ini dan membuatnya bekerja. Saya menambahkan bagian array dan itu masih tidak mengembalikan apa pun. Apakah post-format-quote siput yang tepat untuk dimasukkan ke dalam array?
PNMG
tidak itu tidak Anda perlu meletakkan format posting itu sendiri seperti "kutipan" dan bukan pasca-format-kutipan
Bainternet
Apakah maksud Anda saya harus meletakkan 'terms' => array ('quote') karena itulah yang telah saya kutip sebagai fungsi add_theme_support? Saya mencobanya juga. Masih belum berhasil.
PNMG
well 'terms' => array ('quote') berfungsi dari saya, coba gema format posting dengan 'echo get_post_format ();' dan lihat apa yang Anda dapatkan
Bainternet
Ok, jadi ketika saya gaung saya mendapat 'quote'. Dalam keadaan putus asa, saya telah mematikan semua plugin dan beralih kembali ke tema standar dua puluh, dan membuat 3 posting tes, satu dengan format kutipan. Saya telah memperbarui file functions.php untuk menambahkan kutipan ke panggilan add_theme_support dan memperbarui index.php untuk menggunakan kode berikut: [lihat edit di bagian bawah posting asli]
PNMG