Эй, ребята, последние дни я пытался понять, как это сделать. Как написано на http://net.tutsplus.com/tutorials/javascript-ajax/create-a-twitter-like-load-more-widget/, но внутри wordpress. Наконец-то я нашел решение, возможно, не самое лучшее, но я надеюсь, что вы, ребята, сможете улучшить мой код и опубликовать его здесь, как это делаю я. Не стесняйтесь использовать его где угодно. (мои навыки кодирования очень плохие, поэтому
Сначала вам нужно включить jquery в свой заголовок.
Вставьте этот код на страницу, на которой вы хотите отображать сообщения:
<?php
session_start();
$number_of_posts = 3;
if (!$_SESSION['posts_start']) { $_SESSION['posts_start'] = 0; }
$_SESSION['posts_start'] = $_SESSION['posts_start'] ? $_SESSION['posts_start'] : $number_of_posts;
$total_posts = wp_count_posts('post');
$total_posts = $total_posts->publish;
?>
<script type="text/javascript">
jQuery(document).ready(function(){
var initialPosts = <?php echo my_get_posts(0, 5); ?>;
var postHandler = function(postsJSON) {
jQuery.each(postsJSON,function(i,post) {
// Salva as variáveis de cada post
var postURL = post.permalink;
var postCOMMENTS = post.comments;
var postTITLE = post.title;
var postDATE = post.date;
var postAUTHOR = post.author;
// Coloca as variáveis na lista
jQuery(".lista-artigos")
.append("<li><span class="comentarios-artigo">" + postCOMMENTS + "</span><h2><a href="" + postURL +"">" + postTITLE + "</a></h2><span class="data-artigo">Postado em " + postDATE + " por " + postAUTHOR + "</span></li>")
});
};
postHandler(initialPosts);
var totalposts = <?php echo $total_posts; ?>;
var start = <?php echo $_SESSION['posts_start']; ?>;
var desiredPosts = <?php echo $number_of_posts; ?>;
jQuery('#load-more').click(function(){
jQuery('#load-more').removeClass('carregar').addClass('ativado').text('Loading...');
jQuery.ajax({
url: 'http://yoursite/wp-content/themes/yourtheme/mais-posts.php',
data: {
'start': start,
'desiredPosts': desiredPosts
},
type: 'get',
dataType: 'json',
cache: false,
success: function(responseJSON) {
jQuery('#load-more').text('Load More');
start += desiredPosts;
postHandler(responseJSON);
},
error: function() {
jQuery('#load-more').text('Ops! Try Again.');
},
complete: function() {
jQuery('#load-more').removeClass('ativado').addClass('carregar');
if (totalposts <= start) { jQuery('#load-more').hide(); }
}
});
});
});
</script>
Создайте файл php в папке вашей темы (мой называется mais-posts.php) со следующим кодом:
<?php
require( '../../../wp-load.php' );
if(isset($_GET['start'])) {
echo my_get_posts($_GET['start'], $_GET['desiredPosts']);
$_SESSION['posts_start'] += $_GET['desiredPosts'];
exit();
}
?>
Я надеюсь, что это может помочь любому, кто ищет что-то подобное.
Поэтому, если у вас есть какие-либо предложения по этому коду, напишите ниже.
У вас был (есть) вопрос где-то там?
Этот код не работает. Где объявлена функция
my_get_posts($start, $desired_posts)
?определенно полезный, не
t know that. I
буду пытаться улучшить код. Если у вас есть какие-либо предложения, пожалуйста, напишите, хе-хе@Vitor Argos Я не очень хорошо разбираюсь в JS, и ваш код в основном такой, так что это почти предел того, что я могу посоветовать. 🙂 Codex, безусловно, хорошее начало, реализация Ajax в WP очень специфична для WP, но позволяет практически без проблем интегрироваться с PHP-кодом.
Для начала см. AJAX в плагинах. В WordPress есть собственный механизм обработки Ajax-запросов, и именно его следует использовать вместо включения файлов
wp-load.php
.