2012-05-29 42 views
10

Tôi muốn biết nếu có một cách để sử dụng chức năng như query_post() trong một cuộc gọi ajax?Làm thế nào để sử dụng chức năng wordpress trong một cuộc gọi ajax

Hãy nói rằng tôi đang kêu gọi các tập tin _inc/ajax.php

Tôi muốn trở thành abble để sử dụng các chức năng wordpress, nhưng tôi không biết tại sao. Ai đó có thể giúp tôi vì điều đó không?

Cảm ơn rất nhiều :)

Trả lời

26

WordPress cung cấp Url Ajax mà bạn nên sử dụng cùng với một số Ajax API hoàn chỉnh.

Bạn cần tạo hàm jQuery.

Ví dụ:

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

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

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

Các ajaxurl var luôn luôn có sẵn ở phía admin. Nếu bạn sử dụng nó trên giao diện người dùng, bạn cần phải xác định nó.

Sau đó, một hàm PHP, nơi bạn có thể chạy truy vấn của mình. Hàm PHP phải được đính kèm với hành động wp_ajax_your_action.

Ví dụ:

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 
} 

Hành động wp_ajax_your_action là dành cho quản trị nếu bạn cần phải sử dụng nó trên mặt trận kết thúc hành vi sẽ là wp_ajax_nopriv_your_action

+0

Xin chào, tôi sẽ kiểm tra điều này, cho bạn biết cách hoạt động :) –

+0

@Chris_O Cảm ơn người đàn ông, nó thực sự giúp tôi. – Toretto

0

Tôi khuyên bạn nên sử dụng plugin JSON API: http://wordpress.org/extend/plugins/json-api/. Nó cung cấp một giao diện RESTful cho các chức năng WordPress phổ biến nhất bao gồm query_post và cho phép bạn thêm các hành động của riêng bạn.

+0

Xin cảm ơn, nhưng có thể truy xuất một số văn bản thuần túy bằng API này? Hoặc là nó chỉ là một số dữ liệu mà tôi cần phải thiết kế sau khi với javascript? –

1

Bạn phải tạo bạn hoạt động trong chủ đề của bạn functions.php Dưới đây là ví dụ về các bài đăng tải phổ biến sử dụng 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); 
          } 
         }); 
        } 
       }); 
Các vấn đề liên quan