2012-05-29 60 views

回答

26

WordPress提供了一個Ajax網址,您應該使用它以及完整的Ajax API

您需要創建一個jQuery函數。

實施例:

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

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

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

的ajaxurl變種是始終可用的管理側。如果你在前端使用它,你需要定義它。

然後你可以運行你的查詢的PHP函數。 PHP函數必須附加到wp_ajax_your_action操作。

例子:

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 
} 

wp_ajax_your_action行動是管理員,如果你需要使用它在前端的行動將wp_ajax_nopriv_your_action

+0

嘿,我要檢查一下,告訴你它是如何工作:) –

+0

@Chris_O感謝它的男人,它真的幫助我。+ 1爲它 – Toretto

0

我強烈建議JSON API插件:http://wordpress.org/extend/plugins/json-api/。它爲最常見的WordPress功能提供了RESTful界面,包括query_post,並允許您添加自己的操作。

+0

嘿,謝謝,但是有可能檢索一些純文本使用這個API?或者它只是一些數據,我需要用JavaScript來設計? –

1

你必須創建在你的主題運作的functions.php 這裏是使用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); 
          } 
         }); 
        } 
       }); 
相關問題