ajax加载wordpress内容删除换行符/段落标记

时间:2013-08-12 23:20:52

标签: php jquery json wordpress

我遇到了使用jQuery加载wordpress内容的ajax的问题​​。 它工作得很好,除了没有解析行返回。 它被json拉进来,并被困在两个不同的div中。

jquery代码:

    $('.load').on('click',function(e){
    e.preventDefault();
    var person_clicked = $(this).attr('id');
        $.post('/load.php', { id:person_clicked, callback:'person' } )
            .done(function(data) {
                alert(data);
                $('.page_tagline').html(data.title);
                $('.left_content').html(data.content); 
                scrollToElement($('#hero'));
            });     
    return false;
});

load.php:

<?php
/* Send as JSON */
 header("Content-Type: application/json", true);
require('../../../wp-load.php');
?>

            <?php query_posts('p='.$_POST['id']);
            $post = $wp_query->post;
            ?>
            <?php if (have_posts()) : the_post(); ?>  
                 <?php
                    $returned = array(
                        'title'   => get_the_title(),
                        'content' => get_the_content(),
                    );
                 ?>                                 
            <?php
                echo json_encode($returned);
            ?>
            <?php endif;?>  

当我提醒它时,内容看起来好像段落在那里。段落之间有一定的间距。但当它落入div时,它只是一个巨大的连续判决。

另外,当我正常加载时,间距就在那里。我尝试删除ajax的json部分,然后将整个东西加载到div中,并且间距保持不变,这肯定是一个json的东西(据我所知)。这样做时,代码输出/ r / n / r / n,其中新段落应该是,这正是wordpress所做的。

关于如何让json保留段落的任何想法?

1 个答案:

答案 0 :(得分:2)

由于未运行函数wpautop(),因此无法自动从rowbreaks转换为p-tag。
它是the_content上的过滤器。如果你希望get_the_content()具有与the_content()相同的格式 你需要通过过滤器传递它:

apply_filters('the_content',get_the_content())