[英]wordpress ajax call single post
我試圖在wordpress循環中進行ajax調用,基本上,我想在單擊標題后在div的首頁中加載帖子的內容。 調用ajax似乎可以工作,但是我有一個問題,整個頁面都將加載,我只想加載具有特定ID的div的內容。
這是我的代碼:index.php
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<a class="post-link" rel="<?php the_ID(); ?>" href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
<?php endwhile; endif; ?>
<div id="single-post-container"></div>
這是single.php
<?php $post = get_post($_POST['id']); ?>
<div id="single-post post-<?php the_ID(); ?>">
<?php while (have_posts()) : the_post(); ?>
<?php the_title();?>
<?php the_content();?>
<?php endwhile;?>
</div>
這是js
jQuery(document).ready(function(){
jQuery.ajaxSetup({cache:false});
jQuery(".post-link").click(function(){
var post_link = jQuery(this).attr("href");
jQuery("#single-post-container").html("content loading");
jQuery("#single-post-container").load(post_link);
return false;
});
});
我試圖在post_link之后添加ID#single-post,如下所示:
jQuery("#single-post-container").load(post_link #single-post);
但是,當我運行gulp時,我遇到了一個阻止我的錯誤。 我怎樣才能達到這個范圍?
有人可以給我幫助或建議嗎?
我認為這可能是答案,但前提是我已正確理解問題:
什么是post_link? 您的AJAX呼叫呼叫的實際網址是什么? 如果您只是調用single.php,那么首先要做的就是調用header()-因此您可能會得到整個頁面。 查看您的index.php,我認為這可能正在發生。
如果是這樣的話。 您需要查找如何在WordPress中進行AJAX調用。 您必須添加帶有add_action('wp_ajax_my_action',mycallback)之類的AJAX回調。 然后,您的回調僅可以使用get_post()獲得單個帖子。 您的AJAX調用應該調用的實際網址是:
YOURDOMAIN /可濕性粉劑管理員/管理-ajax.php?行動= my_action&POST_ID = THEPOSTID。 您可以使用admin_url()幫助您構建正確的URL。
您可能需要將THEPOSTID注入JavaScript。 使用wp_localize_script。 或者,您可以將其添加為index.php中的屬性,然后在JavaScript中獲取它。
然后,您的回調-mycallback()-可以使用get_post()來獲取帖子並返回,而不會出現所有頁面混亂。 例如:
function mycallback()
{
$postId = $_GET['post_id'];
$postRow = get_post($postId);
echo $postRow->post_content;
wp_die();
}
也許找一些關於如何用WordPress做AJAX的例子? 例如http://wptheming.com/2013/07/simple-ajax-example/
更新:
添加了wp_die(); 在AJAX回調結束時。 您需要執行此操作以阻止WordPress吐出大量頁面內容。 實際上,這可能是single.php中缺少的部分。 Stil,也許最好還是使用admin-ajax.php來做。
如果這可以幫助某人,我用這段代碼解決了
//take the permalink of the single post
var post_permalink = locations[i].post_url + " #single-post";
// load post in the div
jQuery("#single-post-container").html("content loading");
jQuery('#single-post-container').load(post_permalink);
還是謝謝你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.