• Resuelto drac022

    (@drac022)


    Buenas, no consigo que cargue campo personalizado si lo pongo después de un loop que carga una categoría. Si lo pongo delante, sí. Qué estoy haciendo mal? Me estoy volviendo loco…

    <div class="eight columns">
    	<h4>Editorial</h4>
    	<div class="line2"></div>
    	<div class="line1 margen-abajo10"></div>
    
    	<!-- 1/4 Column -->
    	<?php if (have_posts()) : ?>;
    		<? $editorial = get_option('of_editorial') ?>
    		<?php query_posts('category_name='.$editorial.'&posts_per_page=2'); ?>
    		<?php while (have_posts()) : the_post(); ?>
    			<div class="four columns alpha">
    				<div class="item-img">
    			              <a href="<?php the_field('link_video'); ?>" rel="prettyPhoto"> <img src="<?php the_field('imagen_proyecto'); ?>" alt=""/><div class="overlay zoom"></div></a>
    				</div>
    
    			        <div class="portfolio-item-meta">
    					<h6><?php the_field('producto'); ?></h6>
    					<p><?php the_field('cliente'); ?></p>
    				</div>
    
    		         </div>
    
    		<?php endwhile;?>
    	<?php endif; ?>
    </div>
    
    <div class="eight columns">
    
    	<h4>Escucha nuestras canciones:</h4>
    	<div class="line2"></div>
    	<div class="line1 margen-abajo10"></div>
    
    	<?php if (have_posts()) : ?>;
    		<?php while (have_posts()) : the_post(); ?>
    		  	<p><?php the_field('canciones'); ?></p>
    		<?php endwhile; ?>
    	<?php endif; ?>
    
    </div>
Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • Creo que tienes que «rebobinar» los posts. Me explico, cuando el loop termina, digamos que éste se queda apuntando al último post. En el primer loop has recorrido todos por lo que en el segundo detecta que ya no hay más que mostrar. Usa la función rewind_posts(); entre un loop y otro. Debería funcionar.

    Iniciador del debate drac022

    (@drac022)

    Gracias Igmoweb, pero sigue sin funcionar… me estoy volviendo loco, no le encuentro explicación alguna.

    Iniciador del debate drac022

    (@drac022)

    Lo curioso es que cuando voy a ver qué carga la página, aparecen dos <p></p> de las dos líneas de texto que debería cargar, pero vacíos…

    Prueba a poner algo así para ver si está sacando los posts correctamente:

    <?php if (have_posts()) : ?>;
    		<?php while (have_posts()) : the_post(); ?>
    		<p><?php the_title(); ?></p>
    	  	<p><?php the_field('canciones'); ?></p>
    	<?php endwhile; ?>
    <?php endif; ?>

    Por otra parte, the_field() supongo que es una función que has creado tú, ¿no?¿Esa función saca directamente por pantalla ese campo o hay que ponerle un echo delante? ¿Podrías pegar aquí el código de esa función?

    Iniciador del debate drac022

    (@drac022)

    Uso http://www.advancedcustomfields.com/ plugin para customizar los campos personalizados de las páginas y entradas. La llamada a los campos se hace con the_field(). Busco en los archivos del plugin pero no encuentro la función.

    He probado lo que dices, a cargar the _title() añadiendo a el loop <?php rewind_posts(); ?> después del <?php endwhile;?> y carga los title del loop, no del post. Como bien dices, es como si no se cerrara el loop.

    Prueba con esto. No utilices query_posts. Es mejor que uses WP_Query:

    <?php
    $editorial = get_option('of_editorial');
        $my_query = new WP_Query('category_name='.$editorial.'&posts_per_page=2');
    
        ?>
          <div class="eight columns">
      <h4>Editorial</h4>
      <div class="line2"></div>
      <div class="line1 margen-abajo10"></div>
    
      <!-- 1/4 Column -->
      <?php if (have_posts()) : ?>
        <?php while ( $my_query -> have_posts() ) : $my_query -> the_post(); ?>
          <div class="four columns alpha">
            <div class="item-img">
                        <a href="<?php the_field('link_video'); ?>" rel="prettyPhoto"> <img src="<?php the_field('imagen_proyecto'); ?>" alt=""/><div class="overlay zoom"></div></a>
            </div>
    
                  <div class="portfolio-item-meta">
              <h6><?php the_field('producto'); ?></h6>
              <p><?php the_field('cliente'); ?></p>
            </div>
    
                 </div>
    
        <?php endwhile;?>
      <?php endif; ?>
    </div>
    <div class="eight columns">
    
      <h4>Escucha nuestras canciones:</h4>
      <div class="line2"></div>
      <div class="line1 margen-abajo10"></div>
    
      <?php if ($my_query -> have_posts()) : ?>
        <?php while ($my_query -> have_posts()) : $my_query -> the_post(); ?>
            <p><?php the_field('canciones'); ?></p>
        <?php endwhile; ?>
      <?php endif; ?>
    
    </div>
        <?php

    Si no te sale así entonces es que el campo ‘canciones’ no está bien definido en el plguin que dices, revísalo y ya cuentas.

    Iniciador del debate drac022

    (@drac022)

    Resuelto a medias: El crear $editorial era para poder cambiar la categoría del loop siempre que quisiera desde las opciones del tema. Lo he cambiado por la manera normal para cargar loop de una categoría

    <?php $my_query = new WP_Query(‘category_name=editorial&showposts=2’); ?>

    y cambiando como dijiste WP_Query en vez de query_posts.

    Aún no entiendo muy bien donde estaba el problema pero he salido del paso, que también me sirve así.

    Muchas gracias por la ayuda igmoweb

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • El debate ‘No carga Campo personalizado después de loop’ está cerrado a nuevas respuestas.