页面列表-AJAX加载更多内容

时间:2014-10-08 作者:Alan Shortis

如果这是一个非常宽泛的问题,我很抱歉,但我有点迷路了。

我使用以下内容显示子页面(注意:我使用的是高级自定义字段)

<?php 

/**
 * Template Name: Work
 * Description: Work page template
 */

get_header(); ?>

<div class="header-spacer"></div>

<?php     
while ( have_posts() ) : the_post(); ?>
    <div class="work-intro-container">
        <h1 class="work-title"><?php echo get_field(\'sub_title\'); ?></h1>
        <p class="work-intro"><?php echo get_field(\'support_text\'); ?></p>
    </div>

    <nav class="work-menu">
        <ul>
            <?php 
                $pages = get_children( array(\'post_parent\' => 20, \'orderby\' => \'menu_order\', \'order\' => \'ASC\') );
                foreach($pages as $page): 
                    $link = get_permalink($page->ID);
                    $title = get_field(\'sub_title\', $page->ID);
                    $thumbnail = get_field(\'work_page_thumbnail\', $page->ID);
                ?>
                <li>
                    <a href="<?php echo $link; ?>">
                        <div class="thumbnail-overlay"></div>
                        <img src="<?php echo $thumbnail[\'url\']; ?>" alt="<?php echo $thumbnail[\'alt\']; ?>">
                        <p class="thumbnail-label"><?php echo $title; ?></p>
                    </a>
                </li>
            <?php endforeach; ?>
        </ul>
    </nav>

<?php endwhile; // end of the loop.
?>
<?php include "modules/contact-box.php"; ?>
<?php get_footer(); ?>
这很好用。我使用的是get\\u children而不是get\\u pages,因为据我所知,没有有效的方法来限制使用后一种方法返回的页面数。

所以我想显示6个页面,并有一个按钮通过AJAX加载另外6个页面。

我毫无乐趣地读完了各种教程。

我宁愿不使用插件;我意识到喷气背包很受欢迎,但对我来说太重了。

任何建议都将不胜感激。

--

UPDATE

在进行了更多的挖掘和google搜索之后,我有了一个粗略的AJAX调用。

JS公司

var ajaxUrl = \'http://localhost:8888/spindle-2015/wp-admin/admin-ajax.php\',
        perAppend = 2,
        i = 0;

    $(\'.js-load-more\').on(\'click\', function(e) {
        e.preventDefault();
        console.log(\'Clicked\');
        $.ajax({
            type: \'POST\',
            dataType: \'html\',
            url: ajaxUrl,
            data: { 
                action: \'loadMoreWork\', 
                items: perAppend, 
                appends: i 
            },
            success: function(data) { 
                $(\'nav.work-index\').append(data); 
            }
        });
        i++;
    });
我的主题的功能。php

function loadMoreWork($page) {
    echo $_POST[\'items\'];
    echo $_POST[\'appends\'];
}
// Users logged in
add_action( \'wp_ajax_loadMoreWork\', \'loadMoreWork\' );
// Users not logged in
add_action( \'wp_ajax_nopriv_loadMoreWork\', \'loadMoreWork\' );
这是吐出来的itemsappends 在我的页面上。

目前有几个问题:

与我的itemsappends 变量,有一个随机0 正在追加。它是从哪里来的?我该如何杀死它?

我是应该把我想附加的所有标记都放在函数中,还是有更好的方法来模板化它?

2 个回复
最合适的回答,由SO网友:BenFreke 整理而成

Previous Question

我链接到的答案显示了您需要采取的步骤。你可能没有在搜索中找到它,因为你没有使用正确的术语。

由于您是一名前端开发人员,我会根据该人员的建议这样做。

不要在模板中加载任何内容。只要有一个空的ul,上面有一个可以作为目标的id,还有一个用于click事件的按钮

  • 在页面加载时,点击按钮开始该过程

  • SO网友:rob.m

    使用简单的css解决方案隐藏<li>您不想首先显示的或使用jQuery计算<li>是否显示或隐藏上一集/下一集?

    结束

    相关推荐

    AJAX文件上传-类型错误:不是函数ajaxSubmit()

    我有一个插件,可以作为标准帖子使用,但不能作为AJAX帖子请求使用。我在Firebug中得到了一个使用此函数的非函数错误:类型错误:jQuery(…)。ajaxSubmit不是一个函数jQuery(this).ajaxSubmit(options); 这一魔法起到了拯救作用:http://codeimpossible.com/2010/01/13/solving-document-ready-is-not-a-function-and-other-problems/( function($) {