je suis nouveau sur Wordpress et j'ai vraiment besoin d'aide ici. Mon site principal, liste le résumé de tous les articles, avec pagination. Mais lorsqu'un utilisateur publie un nouveau message, le seul moyen de le voir sur la page principale est de le recharger ... Je veux savoir s'il existe un moyen d'afficher automatiquement les nouveaux messages, comme Facebook ....
Je n'ai pas trouvé le moyen de le faire jusqu'à maintenant.
J'ai supprimé la ligne suivante de mon index.php (dans le répertoire/wp-content/themes/wp_blogger /):
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php include(TEMPLATEPATH."/excrept.php"); ?>
<?php endwhile; else: ?>
<div class="featured_section">
<div class="featured_in">
<h3 style="margin-bottom:800px;"><?php _e('Nenhum post encontrado com estes critérios.'); ?></h3>
</div>
</div>
<?php endif; ?>
J'ai mis le code ci-dessus dans un fichier load.php (dans le même répertoire) et le remplace dans le fichier index.php par:
<script>
$(document).ready(function(){
var callAjax = function(){
$.ajax({
method: "GET",
url: "/RMON/blog/wp-content/themes/wp_blogger/load.php",
success: function(data){
$("#test").html(data);
}
});
}
setInterval(callAjax,5000);
});
</script>
<div id="test"></div>
Mais pas de chance avec ça ... Je reçois cette erreur: Erreur fatale: appel de la fonction non définie has_posts () dans /var/www/RMON/blog/wp-content/themes/wp_blogger/load.php à la ligne 1
Votre réponse relève certainement du domaine AJAX. Si vous utilisez un formulaire, essayez de définir le onsubmit eventListener
égal à return false;
(plus tous les autres attributs nécessaires), comme suit:
<form onsubmit="return false;">
Ensuite, vous envoyez un message et analysez-le avec PHP et, en fonction de l'effet que vous souhaitez, et de l'entrée de l'utilisateur, vous obtenez une réponse à votre script en attente AJAX, qui peut prendre le ajax.repsonseText
et selon que la réponse était égale ou non à ce que vous recherchiez, vous pouvez définir la variable innerHTML
de l'élément HTML souhaité égale à ce que vous souhaitiez sans actualiser la page. Plus que probablement quelque chose comme ça:
if(ajax.responseText != "error") {
document.getElementById("userInputDiv").innerHTML = ajax.responseText;
}
Cela devrait être trivial à faire avec AJAX (il a été inventé pour faire exactement ce genre de choses). Vous avez besoin de code javascript qui envoie une demande AJAX demandant le dernier message posté toutes les X secondes et modifiant le contenu de votre div avec le contenu renvoyé (ou plus intelligent et ajoutant un nouveau div quand il est nouveau. contenu)
Du côté du serveur, vous devrez ajouter un gestionnaire pour traiter votre demande spécifique et renvoyer le contenu du dernier message. Voir cette page de codex http://codex.wordpress.org/AJAX_in_Plugins pour apprendre à le faire correctement.