Jak wykonać zapytanie według formatu postu w WordPress 3.1

10

Próbuję wyszukać wszystkie posty w formacie „cytat”. Dodałem formaty postów do mojego functions.php za pomocą

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

Wybrałem „cytat” jako format posta w adminie. Ostatni przykład w obszarze Taxonomy_Parameters pokazuje, jak wyświetlać posty w formacie „cytatu”, ale kiedy uruchomię je w moim motywie, żadne posty nie są zwracane. Oto kod:

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

Kiedy po prostu odpytuję wszystkie posty i miejsca

echo get_post_format();

w pętli zwraca słowo „cytat” na interfejsie. Ponadto, gdy zmienię zapytanie var_dump (), nie widzę nic w tablicy o formacie post.

Czy ktoś wie, czy możliwe jest zapytanie przez format postu? Jeśli tak to jak?

EDYCJA - Patrz komentarz 5 pod odpowiedzią Bainternet: Jest to kod znaleziony na index.php dwudziestego motywu nowej instalacji, która próbuje zwrócić cytaty typu formatowania. Zwracam „nie” zamiast „cytat”. Widzisz coś, co powinienem zmienić?

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

EDYCJA 2 - Wygląda na to, że kodeks WordPress zmienił się teraz, a część parametrów taksonomii znajduje się tylko w pamięci podręcznej Google.

EDYCJA 3 - KOŃCOWY KOD ROBOCZY

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

Dwudziesta dziesiąta edycja od pierwszej edycji będzie ...

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
źródło

Odpowiedzi:

7

Ten kod jest niepoprawny! Ty masz

'taxonomy' => 'post-format'

Ale tak naprawdę musi to być:

'taxonomy' => 'post_format'

Bez podkreślenia zapytanie będzie nieprawidłowe. Właśnie przetestowałem to na mojej instalacji WordPress 3.1 po kilku godzinach wyciągania włosów.

Mam nadzieję, że to pomaga !!

Jared White
źródło
Dziękuję bardzo za złapanie tego. Mógłbym przysiąc, że skopiowałem oryginalny kod bezpośrednio ze strony Kodeksu. (Być może kiedyś też tam było źle.) Teraz działa. Wraz ze zmianą na post_format musiałem również zmienić „terminy” => „cytat” z powrotem na „warunki” => „post-format-quote”. Dla wszystkich innych zainteresowanych zapoznaj się z Edycją 3 oryginalnego postu, aby uzyskać ostateczny kod.
PNMG
Jasne, cieszę się, że mogłem pomóc. :)
Jared White
2

w tax_query„warunkach” akceptuje tablicę, więc musisz umieścić post-format-quotetablicę taką jak ta:

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post-format',
      'field' => 'slug',
      'terms' => array('post-format-quote')
    )
  )
);
query_posts( $args );
Bainternet
źródło
Czy ktoś próbował tego i sprawił, że zadziałało. Dodałem część tablicy i nadal nic nie zwróciło. Czy post-format-quote jest poprawnym ślimakiem do umieszczenia w tablicy?
PNMG,
nie, nie musisz umieszczać formatu postu, który jest jak „cytat”, a nie post-format-quote
Bainternet
Czy masz na myśli, że powinienem umieścić „terminy” => tablica („quote”), ponieważ właśnie to mam zdefiniowaną ofertę w funkcji add_theme_support? Też tego próbowałem. Wciąż nie ma szczęścia.
PNMG,
cóż, „terminy” => tablica („cytat”) działa ze mnie, spróbuj powtórzyć format postu za pomocą „echo get_post_format (); ' i zobacz, co dostajesz
Bainternet
Ok, więc kiedy echo, dostaję „cytat”. W chwili desperacji wyłączyłem wszystkie wtyczki i wróciłem do domyślnego motywu twentyten i stworzyłem 3 posty testowe, w tym jeden z cytatem. Zaktualizowałem plik functions.php, aby dodać cytat do wywołania add_theme_support, i zaktualizowałem index.php, aby używał następującego kodu: [patrz edycja u dołu oryginalnego postu]
PNMG