Ottenere l'ID del post nei cicli while che mostrano l'ID della pagina

13 mag 2014, 22:33:56
Visualizzazioni: 23.3K
Voti: 2

È passato un po' di tempo da quando ho usato WordPress e sto cercando di utilizzare Advanced Custom Fields. Sto provando a mostrare l'ID del post all'interno di un ciclo su una pagina, così da poter usare get_field per mostrare i contenuti del post. Il $post->ID mi restituisce l'ID della pagina e non l'ID del post, quindi viene mostrato il numero sbagliato. Come posso ottenere l'ID del post?

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

                    <?php $current_id = $post->ID ?>

   <?php echo $current_id ?>

            <h1><?php the_field('titleFart', $current_id); ?></h1>

        <?php endwhile; // fine del ciclo. ?>

<?php endif; ?>
5
Commenti

come stai interrogando i post nella pagina?

Milo Milo
13 mag 2014 22:37:58

@Milo oh forse non lo sto facendo ops

Anders Kitson Anders Kitson
13 mag 2014 22:46:58

Tutto ciò di cui avevo bisogno era questo query_posts( 'posts_per_page=5' ); è passato molto tempo dall'ultima volta che ho toccato WordPress, ora è tutto JavaScript grazie

Anders Kitson Anders Kitson
13 mag 2014 22:49:00

Se fai echo di get_the_id(), i numeri sono gli stessi?

certainstrings certainstrings
13 mag 2014 22:38:53

sì, sono entrambi l'ID della pagina, non l'ID del post

Anders Kitson Anders Kitson
13 mag 2014 22:46:35
Tutte le risposte alla domanda 3
0

Non utilizzare query_posts o WP_Query se ne hai bisogno nel loop principale. In ogni caso, non usare mai query_posts.

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

   <?php $current_id = get_the_ID(); ?>
   <?php echo $current_id ?>

            <h1><?php the_field('titleFart', $current_id); ?></h1>

<?php endwhile; // fine del loop. ?>
<?php endif; ?>

Perché: get_the_ID()

22 ott 2014 16:56:41
0

Per favore non usare query_posts()

Nota: Questa funzione non è pensata per essere utilizzata da plugin o temi. Come spiegato in seguito, ci sono opzioni migliori e più performanti per modificare la query principale. query_posts() è un modo eccessivamente semplice e problematico per modificare la query principale di una pagina sostituendola con una nuova istanza della query. È inefficiente (riesegue le query SQL) e fallirà completamente in alcune circostanze (specialmente spesso quando si ha a che fare con l'impaginazione dei post). Qualsiasi codice WP moderno dovrebbe utilizzare metodi più affidabili, come fare uso dell'hook pre_get_posts, per questo scopo.

http://codex.wordpress.org/Function_Reference/query_posts

Nel tuo caso, stai creando un loop secondario su una pagina, quindi quello che vuoi è un nuovo oggetto WP_Query.

$q = new WP_Query(
  array(
    'posts_per_page' => 5
  )
);

if ( $q->have_posts() ) {
  while ( $q->have_posts() ) {
    $q->the_post(); 
    $current_id = $post->ID;
    echo $current_id ?>
      <h1><?php the_field('titleFart', $current_id); ?></h1><?php 
  } // fine del loop. 
}
13 mag 2014 23:59:27
0

Utilizza wp_query() con i tuoi parametri al posto di query_posts. Query_posts rallenta le tue query. http://codex.wordpress.org/Class_Reference/WP_Query

13 mag 2014 22:56:20