Come faccio una query per formato postale in WordPress 3.1


10

Sto cercando di eseguire una query per tutti i post con un formato di post "preventivo". Ho aggiunto i formati di post a mio.php con

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

Ho selezionato 'quote' come formato per il post nell'amministratore. L'ultimo esempio in Taxonomy_Parameters mostra come visualizzare post che hanno il formato "quote" ma quando lo eseguo nel mio tema non vengono restituiti post. Ecco il codice:

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

Quando chiedo solo tutti i post e il luogo

echo get_post_format();

nel loop restituisce la parola "quote" sul front-end. Inoltre, quando var_dump () la query non vedo nulla nell'array sul formato post.

Qualcuno sa se è possibile eseguire una query per formato postale? Se é cosi, come?

MODIFICA - Vedi 5 commenti sotto la risposta di Bainternet: questo è il codice trovato su index.php del tema ventiquattro di una nuova installazione che cerca di restituire virgolette di tipo formato. Restituisco "no" anziché "quote". Riesci a vedere qualcosa che dovrei cambiare.

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 - Sembra che il Codex di WordPress sia stato modificato e che la parte relativa ai parametri di tassonomia si trovi solo nella cache di Google.

MODIFICA 3 - CODICE FINALE DI LAVORO

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

La ventitre modifica dalla prima modifica sarà ...

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

Risposte:


7

Questo codice non è corretto! Hai

'taxonomy' => 'post-format'

Ma deve davvero essere:

'taxonomy' => 'post_format'

Senza il trattino basso, la query non sarà valida. Ho appena provato questo sulla mia installazione di WordPress 3.1 dopo aver strappato i capelli per ore.

Spero che aiuti!!


Grazie mille per averlo scoperto. Potrei giurare di aver copiato il codice originale direttamente dalla pagina del Codex. (Forse è stato sbagliato anche lì una volta.) Funziona ora. Oltre a cambiarlo in post_format, avevo anche bisogno di cambiare 'terms' => 'quote' di nuovo in 'terms' => 'post-format-quote'. Per chiunque sia interessato, consultare Modifica 3 del post originale per il codice finale.
PNMG

Certo, felice di essere stato in grado di aiutare. :)
Jared White

2

in tax_query"termini" accetta array quindi è necessario inserire post-format-quoteun array come questo:

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

Qualcuno l'ha provato e l'ha fatto funzionare. Ho aggiunto la parte dell'array e non ha ancora restituito nulla. Post-format-quote è la lumaca corretta da inserire nell'array?
PNMG

no non è necessario inserire il formato del post come "quote" e non post-format-quote
Bainternet

Vuoi dire che dovrei mettere 'terms' => array ('quote') dal momento che è quello che ho definito quote nella funzione add_theme_support? Ho provato anche quello. Ancora niente fortuna.
PNMG

bene 'terms' => array ('quote') funziona da me, prova a riecheggiare il formato del post con 'echo get_post_format ();' e vedi cosa ottieni
Bainternet,

Ok, quindi quando faccio eco che ottengo il "preventivo". In un momento di disperazione ho disattivato tutti i plug-in e sono tornato al tema ventiquattro predefinito e ho creato 3 post di prova, uno con un formato di citazione. Ho aggiornato il file Functions.php per aggiungere un preventivo alla chiamata add_theme_support e aggiornato index.php per utilizzare il seguente codice: [vedi modifica in fondo al post originale]
PNMG
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.