Obține ID-ul postării în bucle while care returnează ID-ul paginii

13 mai 2014, 22:33:56
Vizualizări: 23.3K
Voturi: 2

A trecut ceva timp de când am folosit WordPress și încerc să utilizez Advanced Custom Fields. Încerc să afișez ID-ul postării într-o buclă pe o pagină, pentru a putea folosi get_field pentru a afișa conținutul postării. $post->ID îmi returnează ID-ul paginii, nu ID-ul postării, așa că este afișat un număr greșit. Cum pot obține ID-ul postării?

<?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; // sfârșitul buclei ?>

<?php endif; ?>
5
Comentarii

cum interoghezi postările în pagină?

Milo Milo
13 mai 2014 22:37:58

@Milo oh, poate că nu fac asta, ups

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

Tot ce aveam nevoie era query_posts( 'posts_per_page=5' ); a trecut mult timp de când am lucrat cu WordPress, acum doar JavaScript, mulțumesc

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

Dacă folosești echo get_the_id(), numerele sunt aceleași?

certainstrings certainstrings
13 mai 2014 22:38:53

da, ambele sunt ID-ul paginii, nu ID-ul postării

Anders Kitson Anders Kitson
13 mai 2014 22:46:35
Toate răspunsurile la întrebare 3
0

Nu utiliza query_posts sau WP_Query dacă ai nevoie de ele în bucla principală. În orice caz, nu utiliza niciodată 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; // sfârșitul buclei. ?>
<?php endif; ?>

Deoarece: get_the_ID()

22 oct. 2014 16:56:41
0

Vă rugăm să nu folosiți query_posts()

Notă: Această funcție nu este destinată să fie utilizată de pluginuri sau teme. După cum se explică mai jos, există opțiuni mai bune și mai performante pentru a modifica interogarea principală. query_posts() este o modalitate prea simplistă și problematică de a modifica interogarea principală a unei pagini prin înlocuirea acesteia cu o nouă instanță a interogării. Este ineficientă (re-execută interogări SQL) și va eșua în anumite circumstanțe (mai ales când vine vorba de paginarea postărilor). Orice cod WP modern ar trebui să utilizeze metode mai fiabile, cum ar fi utilizarea hook-ului pre_get_posts, în acest scop.

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

În cazul dvs., creați o buclă secundară pe o pagină, așa că ceea ce doriți este un nou obiect 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 
  } // sfârșitul buclei.
}
13 mai 2014 23:59:27
0

Folosește wp_query() cu parametrii tăi în loc. Query_posts încetinește interogările tale. http://codex.wordpress.org/Class_Reference/WP_Query

13 mai 2014 22:56:20