Obtener el ID de la entrada en bucles while mostrando el ID de página

13 may 2014, 22:33:56
Vistas: 23.3K
Votos: 2

Hace tiempo que no uso WordPress y estoy tratando de usar Advanced Custom Fields. Intento mostrar el ID de la entrada dentro de un bucle en una página para poder usar get_field y mostrar el contenido de la entrada. El $post->ID me da el ID de la página y no el ID de la entrada, por lo que se está mostrando el número incorrecto, ¿cómo puedo obtener el ID de la entrada?

<?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; // fin del bucle. ?>

<?php endif; ?>
5
Comentarios

¿cómo estás consultando las publicaciones en la página?

Milo Milo
13 may 2014 22:37:58

@Milo oh, puede que no lo esté haciendo, ups

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

Todo lo que necesitaba era esto query_posts( 'posts_per_page=5' ); hace mucho tiempo que no trabajo con WordPress, ahora solo JavaScript, gracias

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

Si haces echo get_the_id(), ¿los números son iguales?

certainstrings certainstrings
13 may 2014 22:38:53

sí, ambos son el ID de la página, no el ID del post

Anders Kitson Anders Kitson
13 may 2014 22:46:35
Todas las respuestas a la pregunta 3
0

No uses query_posts o WP_Query si lo necesitas en el bucle principal. De hecho, nunca uses query_posts de ninguna manera.

<?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; // fin del bucle. ?>
<?php endif; ?>

Porque: get_the_ID()

22 oct 2014 16:56:41
0

Por favor no uses query_posts()

Nota: Esta función no está destinada a ser utilizada por plugins o temas. Como se explica más adelante, existen opciones mejores y con mejor rendimiento para alterar la consulta principal. query_posts() es una forma demasiado simplista y problemática de modificar la consulta principal de una página reemplazándola con una nueva instancia de la consulta. Es ineficiente (vuelve a ejecutar consultas SQL) y fallará por completo en algunas circunstancias (especialmente común cuando se trata de paginación de entradas). Cualquier código moderno de WP debe usar métodos más confiables, como hacer uso del hook pre_get_posts, para este propósito.

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

En tu caso, estás creando un bucle secundario en una página, así que lo que necesitas es un nuevo objeto 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 
  } // fin del bucle. 
}
13 may 2014 23:59:27
0

Utiliza wp_query() con tus parámetros en su lugar. Query_posts ralentiza tus consultas. http://codex.wordpress.org/Class_Reference/WP_Query

13 may 2014 22:56:20