首先,我认为这是一个漫长的尝试,但希望有人可以提供帮助。
为了解释当前情况,目前,我有一个自定义插件,可以获取有关用户及其最新4条帖子的各种信息。
我也在使用WPBook插件(所以这是在facebook上,只是一个典型的wordpress网站)
好的,这是我的代码,它为用户抓取了4条最新帖子:
// The Query query_posts('posts_per_page=4&author='.$blogger_id); // set $more to 0 in order to only get the first part of the post global $more; $more = 0; // the Loop while (have_posts()) : the_post(); ?> <div class="oe-grid-box"> <a href="<?php the_permalink() ?>" <?php the_title()?></a> <div class="oe-grid-box-content"> <?php echo the_content( '...' ); ?> </div> <div class="oe-grid-pic"> <a href="<?php the_permalink() ?>"> <span class="<?php echo strtolower($category); ?>"></span> </a> <?php echo $image; ?> </div> </div> <?php endwhile; // Reset Query wp_reset_query(); ?> <div id="load-more">Load More</div>
我尝试按照本教程进行操作,但没有使用单独的插件,而是将代码放在了现有的插件中,但现在页面无法加载:
http://www.problogdesign.com/wordpress/load-next-wordpress-posts-with- ajax/
理想情况下,我想要的是单击“加载更多”按钮时,再获取4个帖子并显示它们。
如果有人能帮助我,我将非常感激。
更新
好,
到目前为止,我已经在jQuery中添加了可调用php文件的文件,该文件有望返回帖子,但不起作用。
我认为这是因为它不知道WordPress功能是什么?
如果我echo在“加载更多”脚本中添加一个简单的脚本,则jQuery成功函数会显示警告,表明它可以正常工作,但是如果我开始做WordPress的工作,则会收到内部服务器错误,这是load- more.php文件中的代码:
echo
// load wordpress into template $path = $_SERVER['DOCUMENT_ROOT']; define('WP_USE_THEMES', false); require($path .'/wp-load.php'); $blogger_id = $_GET['id']; $firstname = $_GET['firstname']; $surname = $_GET['surname']; $posts = $_GET['posts'] + 4; $category = $_GET['category']; $image = $_GET['image']; // The Query query_posts('paged='.get_query_var('paged').'&posts_per_page=' . $posts . '&author='.$blogger_id); // set $more to 0 in order to only get the first part of the post global $more; $more = 0; // then the same loop as in my page that is making the ajax call.
经过大量的努力,我找到了答案,这是为陷入困境的人提供的解决方案。
这进入您的插件页面,您将在其中获取用户的帖子等。
<script type="text/javascript"> $(document).ready(function() { posts = 8; author_posts = parseInt(<?php echo $author_posts; ?>); $("#link_selector").click(function() { // alert('posts - ' + posts + 'author posts - ' + author_posts); if ((posts - author_posts) > 3) { $("#link_selector").text('No more posts!'); } else { var category = '<?php echo strtolower($category); ?>'; var id = '<?php echo $blogger_id; ?>'; var firstname = '<?php echo $firstname; ?>'; var surname = '<?php echo $surname; ?>'; // alert(posts + category + id + firstname + surname); $.ajax({ type: "GET", url: "/wordpress/wp-admin/admin-ajax.php", dataType: 'html', data: ({ action: 'loadMore', id: id, firstname: firstname, surname: surname, posts: posts, category: category}), success: function(data){ $('#ajax_results_container').hide().fadeIn('slow').html(data); posts = posts + 4; if ((posts - author_posts) > 3) { $("#link_selector").text('No more posts!'); } } }); } }); }); </script>
然后在主题的functions.php中,将函数放入您的ajax请求中:
function loadMore() { $blogger_id = $_GET['id']; // get your $_GET variables sorted out // setup your query to get what you want query_posts('posts_per_page=' . $posts . '&author='.$blogger_id); // initialsise your output $output = ''; // the Loop while (have_posts()) : the_post(); // define the structure of your posts markup endwhile; // Reset Query wp_reset_query(); die($output); }
然后,在函数关闭后,放入动作钩子
add_action('wp_ajax_loadMore', 'loadMore'); add_action('wp_ajax_nopriv_loadMore', 'loadMore'); // not really needed
而已!