Cargar post con botón 'Cargar Más' en WordPress

  • Autor Autor Juanjo87
  • Fecha de inicio Fecha de inicio
J

Juanjo87

Gamma
Diseñador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Muy buenas, estoy creando un código para cargar post con un botón de cargar más, todo funciona bien pero tengo una duda.
Actualmente, al cargar la pagina me muestra los mismos post que al darle al botón cargar mas, quiero decir, si yo en el código, pongo que quiero mostrar 10 post, cuando carga la pagina, me muestra esos 10 post y si le doy a cargar mas, me cargan otros 10.
Como puedo hacer para que cuando cargue la pagina, me cargue 10 post, pero al darle a cargar mas, me cargue solo 1?

el código que estoy usando es este:

PHP:
<?php 
add_action( 'wp_ajax_grab_posts', 'grab_posts' );
add_action( 'wp_ajax_nopriv_grab_posts', 'grab_posts' );

function grab_posts(){
	$number=5;
	
	$paged = isset($_REQUEST['p']) ? $_REQUEST['p'] : 1;
	$offset = ($paged - 1) * $number;
	$args = array(
		'post_type' => array('post_type1', 'post_type2'),
		'post_status'=>'publish',
		'orderby' => 'ASC',
		'posts_per_page' => $number ,
		 'paged' => $paged,
		'offset' => $offset,
	 );
     $post_query = new WP_Query( $args );	
		
  if ( $post_query->have_posts() ) { 
		while ( $post_query->have_posts() ) { 
			$post_query->the_post();
	
		 $post_img ='';
		if ( has_post_thumbnail() ) {
		       $post_img = wp_get_attachment_url( get_post_thumbnail_id() );
           }
		   $author = get_the_author();
   ?>

		

   <?php echo $post->post_title; ?>

		      
	<?php
			}
			} else {
				echo 300; 
				}
	die;

	
}



 add_action('wp_head','loadscriptfnc');
 function loadscriptfnc(){
	 
	 echo '<script>var ajaxurl="'.admin_url('admin-ajax.php').'"; </script>';
 }
	?>
 
Última edición:
Por lo que veo la cantidad de posts esta controlada por la variable $number . Lo que deberías hacer es pasarle la cantidad de publicaciones vía parámetro. Cuando carga la pagina, en esa ejecucion le pasas que cargue los primero 10 (o lo que quieras) , y cuando haces clic en el botón le pasas que cargue 1.

No deberías dejar la variable declarada con un valor fijo
 
Última edición por un moderador:
El parámetro offset no es necesario...
 
pues e hecho lo que me comentabais, pero no se a solucionado, me sigue mostrando los mismos post.

El código, por lo que entiendo con lo que me habéis dicho a quedado así:

PHP:
<?php 
add_action( 'wp_ajax_grab_posts', 'grab_posts' );
add_action( 'wp_ajax_nopriv_grab_posts', 'grab_posts' );

function grab_posts(){

	
	$paged = isset($_REQUEST['p']) ? $_REQUEST['p'] : 1;
	
	$args = array(
		'post_type' => array('post_type1', 'post_type2'),
		'post_status'=>'publish',
		'orderby' => 'ASC',
		'posts_per_page' => 5 ,
		 'paged' => $paged,

	 );
     $post_query = new WP_Query( $args );	
		
  if ( $post_query->have_posts() ) { 
		while ( $post_query->have_posts() ) { 
			$post_query->the_post();
	
		 $post_img ='';
		if ( has_post_thumbnail() ) {
		       $post_img = wp_get_attachment_url( get_post_thumbnail_id() );
           }
		   $author = get_the_author();
   ?>

		<div class="owl-item" >

    <a class="no-ajax a_img_carousel" id="effect_hover" onclick="effect_hover('<?php echo $post->ID;?>','hover_effect','#effect_hover_box'); return false;" data-id="<?php the_ID(); ?>" href="<?php the_permalink(); ?>" >

        <img title="<?php echo $post->post_title; ?> " rel="tooltip"  data-title="<?php echo $post->post_title; ?>" src="<?php the_post_thumbnail_url( 'medium' ); ?>"  />

    </a>


</div>
		      
	<?php
			}
			} else {
				echo 300; 
				}
	die;

	
}


/* add ajax url for wordpress in head section*/
 add_action('wp_head','loadscriptfnc');
 function loadscriptfnc(){
	 
	 echo '<script>var ajaxurl="'.admin_url('admin-ajax.php').'"; </script>';
 }
	?>
Le e pasado la cantidad de post por pagina a parámetro y e quitado el offset, pero nada.
 
¿Has comprobado que $_REQUEST['p'] esté cargando el número de la página correctamente?
 
denzel, yo diría que si, pues cada vez que le doy a cargar mas post, me carga 5 nuevos, sin que se repitan y al llegar al ultimo, no me muestra mas.

- - - Actualizado - - -

alguien me ayuda con esto?
 
Atrás
Arriba