Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Usar have_posts() + SHORTINIT en ajax

Estas en el tema de Usar have_posts() + SHORTINIT en ajax en el foro de WordPress en Foros del Web. Hola a todos! Estoy un poco atascado en el uso de ajax+shortinit(para hacerlo más rápido). Os pongo mi código: En mi ajax.php tengo lo siguiente: ...
  #1 (permalink)  
Antiguo 23/12/2014, 10:27
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 14 años, 3 meses
Puntos: 14
Exclamación Usar have_posts() + SHORTINIT en ajax

Hola a todos!

Estoy un poco atascado en el uso de ajax+shortinit(para hacerlo más rápido).

Os pongo mi código:

En mi ajax.php tengo lo siguiente:

Código PHP:
Ver original
  1. define('SHORTINIT',true);
  2. define('AUTH_COOKIE',true);
  3. define('LOGGED_IN_COOKIE',true);
  4. require_once ('../../../../wp-load.php');
  5. require_once ('../../../../wp-includes/taxonomy.php');
  6. require_once ('../../../../wp-includes/meta.php');
  7. require_once ('../../../../wp-includes/post.php');
  8. require_once ('../../../../wp-includes/user.php');
  9. require_once ('../../../../wp-includes/pluggable.php');
  10. require_once ('../../../../wp-includes/capabilities.php');
  11. require_once ('../../../../wp-includes/comment.php');
  12. require_once ('../../../../wp-includes/formatting.php');
  13. require_once ('../../../../wp-includes/query.php');
  14. require_once ('ajax-funciones.php');
  15. if ((!isset($_POST["action"])) || ($_POST["action"]!=="") || (!is_numeric($_POST["action"]))) {
  16.     switch($_POST["action"]){
  17.         case 'buscaPost':
  18.             if ((isset($_POST["miPost"])) || (isset($_POST["slug"]))){
  19.                 sacaPost($_POST["miPost"],$_POST["slug"]);             
  20.             }else{
  21.                 echo "No hay variables";
  22.             }
  23.             break;
  24.     }
  25. }
  26. die();

Y en mi ajax-funciones.php tengo lo siguiente (la función sacaPost)
Código PHP:
Ver original
  1. function sacaPost($idPost,$slugPost){  
  2.     // Buscamos el contenido del post
  3.     $query = array("cat"=>$idPost);
  4.     $objetoDatos = new WP_Query($query);   
  5.     if ($objetoDatos->have_posts()){
  6.         while($objetoDatos->have_posts()){
  7.             $objetoDatos->the_post();
  8.             echo get_the_content();            
  9.         }
  10.         wp_reset_postdata();
  11.     }else{
  12.         echo "any";
  13.     }  
  14. }

He probado ya bastantes cosas pero siempre me devuelve "any" al hacer la llamada. La llamada la hago al hacer un click en una lista que tengo y la hago de la siguiente forma:
Código Javascript:
Ver original
  1. jQuery.post(MyAjax.url,{action: 'buscaPost',miPost: miID,slug: miSlug},function(response){
  2.             jQuery("#contenido-conoceDerecha").html(response);
  3.             jQuery("#contenido-conoceDerecha").show('fade');           
  4.         });

Como véis la llamada es simple pero no se por qué el have_posts() siempre me está sacando como false, como si no existiese ninguna entrada cuando sí lo hay.

¿Qué puede ser el fallo?? Gracias!
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #2 (permalink)  
Antiguo 23/12/2014, 11:36
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 10 meses
Puntos: 193
Respuesta: Usar have_posts() + SHORTINIT en ajax

No se por que deseas usar shortinit en lugar de la función nativa de ajax "wp_ajax_action".

Siguiendo con tu ejemplo:

Código PHP:
Ver original
  1. $query = array("cat"=>$idPost);

Estas haciendo un query en donde la categoría sea igual al $idPost? quieres los posts de una categoría X o un post en específico?
  #3 (permalink)  
Antiguo 24/12/2014, 03:54
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 14 años, 3 meses
Puntos: 14
Respuesta: Usar have_posts() + SHORTINIT en ajax

Cita:
Iniciado por TMeister Ver Mensaje
No se por que deseas usar shortinit en lugar de la función nativa de ajax "wp_ajax_action".

Siguiendo con tu ejemplo:

Código PHP:
Ver original
  1. $query = array("cat"=>$idPost);

Estas haciendo un query en donde la categoría sea igual al $idPost? quieres los posts de una categoría X o un post en específico?
Lo uso porque con el uso "normal" de ajax me tardan las consultas de 2 a 3 segundos y en todos los sitios que he preguntado me comentan de usar el SHORTINIT y construir mi propio fichero para hacerle las llamadas.

Lo que necesitaría sacar es la categoría del id que me llega (quizás confunde un poco el nombre de la variable ) pero justo cuando llega ahí me saca el error

Código PHP:
Ver original
  1. Call to a member function get() on a non-object in /wp-includes/query.php line 28

La linea de ese fichero contiene esto:
Código PHP:
Ver original
  1. return $wp_query->get( $var, $default );

Pero no encuentro qué puede ser el error
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"

Etiquetas: ajax, php, post, url, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:19.