簡體   English   中英

wordpress ajax調用單發

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM