2012-05-29 18 views

Respuesta

26

WordPress proporciona una Url de Ajax que debe usar junto con un Ajax API completo.

Necesita crear una función jQuery.

Ejemplo:

jQuery(document).ready(function($) { 

    var data = { 
     action: 'my_action', 
     whatever: 1234 
    }; 

    jQuery.post(ajaxurl, data, function(response) { 
     alert('Got this from the server: ' + response); 
    }); 
}); 

El ajaxurl var siempre está disponible en la parte de administración. Si lo usa en el frente, debe definirlo.

Luego, una función de PHP donde puede ejecutar su consulta. La función de PHP debe adjuntarse a la acción wp_ajax_your_action.

Ejemplo:

add_action('wp_ajax_my_action', 'my_action_callback'); 

function my_action_callback() { 
    global $wpdb; // this is how you get access to the database 

    $whatever = intval($_POST['whatever']); 

    $whatever += 10; 

     echo $whatever; 

    die(); // this is required to return a proper result 
} 

La acción wp_ajax_your_action es para admin si hay que usarla en el extremo delantero de la acción sería wp_ajax_nopriv_your_action

+0

Oye, voy a comprobar esto, te cuento cómo funciona :) –

+0

@Chris_O Gracias por ello hombre, es realmente ayudarme. + 1 por ello – Toretto

0

le recomiendo el plugin API JSON: http://wordpress.org/extend/plugins/json-api/. Proporciona una interfaz RESTful para las funciones más comunes de WordPress incluyendo query_post y le permite agregar sus propias acciones.

+0

Hey, gracias, pero ¿es posible recuperar algo de texto plano usando esta API? ¿O es solo algunos datos que necesito diseñar después con javascript? –

1

Tienes que crear a funcionar en sus temas functions.php Aquí está el ejemplo de carga de mensajes populares usando ajax

function getPopularPosts() 
{ 
    $popularpostdata = wpp_get_mostpopular_data(); 
    foreach($popularpostdata as $populardata) 
     { 
      $cur_id = $populardata->id; 
      $cur_date = $populardata->post_date; 
      $cur_date = date("F j, Y", strtotime($cur_date)); 
    ?> 
    <article id="<?php echo $populardata->post_slug.'_mp';?>" data-attr-post-title="<?php echo $populardata->title; ?>" <?php post_class(); ?>> 
     <p class="advt_disclosure"><?php echo advtdescloser(); ?></p> 
     <?php 
     echo '<h6>'.getCategoryLink().'</h6>'; 
     $post_mp = get_post($cur_id); 
     ?> 
     <h1><?php echo $populardata->title;?></h1> 
     <div class="entry-content"> 
     <div class="post-details"> <?php echo getAuthorData($post_mp->post_author,$cur_id,$populardata->title,$cur_date); ?> </div> 
     <div class="collapsediv"> 
      <div class="row"> 
      <div class="col-sm-9 post_article"> 
       <?php 
        $content = $populardata->postcontent; //$content_post->post_content; 
        $content = apply_filters('the_content', $content); 
        $content = str_replace(']]>', ']]&gt;', $content); 
        echo $content; 
        wp_link_pages(array(
         'before'  => '<div class="page-links"><span class="page-links-title">' . __('Pages:', 'twentyfifteen') . '</span>', 
         'after'  => '</div>', 
         'link_before' => '<span>', 
         'link_after' => '</span>', 
         'pagelink' => '<span class="screen-reader-text">' . __('Page', 'twentyfifteen') . ' </span>%', 
         'separator' => '<span class="screen-reader-text">, </span>', 
        )); 
       ?> 
       <p class="tags"> TAGS: <?php echo get_the_tag_list('', __(', ', 'twentyfifteen'))?></p> 
      </div> 
      <div class="col-sm-3 hot_deal"> <?php echo getAdvertisements(); ?> </div> 
      <div class="col-sm-12 comment_section"> <?php echo getPostCommentsandSocialmediasharing($post_mp->post_author,$cur_id,$populardata->title); ?> </div> 
      </div> 
     </div> 
     </div> 
     <footer class="entry-footer"> 
     <?php //twentyfifteen_entry_meta(); ?> 
     <?php //edit_post_link(__('Edit', 'twentyfifteen'), '<span class="edit-link">', '</span>'); ?> 
     </footer> 
     <div class="expander"> 
     <button class="expand" data-text-swap="Close article">expand article</button> 
     </div> 
    </article> 
    <?php } 
    exit(); 
} 
add_action('wp_ajax_getPopularPosts', 'getPopularPosts'); 
add_action('wp_ajax_nopriv_getPopularPosts', 'getPopularPosts');` 

And for call ajax you need to put some where in your themes footer.php 

`$(".popular_posts").click(function(e) { 
        e.preventDefault(); 
        if($('.popularposts').html().length==0) 
        { 
         $('.popularposts').html('<p class="text-center" style="margin-top:40px;"><img src="<?php echo get_home_url(); ?>/wp-content/themes/twentyfifteen/images/ajax-loader.gif"></p>'); 
         $.ajax({ 
          type: 'POST', 
          url: "<?php echo get_home_url(); ?>/wp-admin/admin-ajax.php", 
          data: { 
           action: 'getPopularPosts' 
          }, 
          success: function(data) { 
           $('.popularposts').html(data); 
          } 
         }); 
        } 
       }); 
Cuestiones relacionadas