web-dev-qa-db-fra.com

Impossible d’accéder aux fonctions WordPress dans un fichier appelé via Ajax?

J'essaie de recharger les nouveaux messages en utilisant jQuery. Autant que je sache, je ne peux pas recharger le contenu d'un div à l'intérieur de la page, donc je recharge un fichier dans cette div.

Le problème est que mon fichier chargé me donne un Erreur fatale: appel de la fonction non définie wp_query ()

Comment puis-je implémenter des fonctions dans un fichier nouvellement créé dans le répertoire du thème pour fonctionner correctement?

Ceci est mon jQuery

<script language="JavaScript">
$(function() {
    var SANAjax = function(){

    }
    setInterval(SANAjax, 15000 );
});
</script>

Et c'est ce que j'ai dans reloadhomeposts.php (j'ai supprimé le contenu cependant)

<?php $recent = new WP_Query("cat=3,4,5&showposts=10"); while($recent->have_posts()) : $recent->the_post();?>
.
.
.
<?php endwhile; ?>
2
EnexoOnoma

La raison de cette erreur est que votre chargement du fichier sans chargement dans le système WordPress et ainsi wp_query () n'existe pas.

La solution rapide consiste à:

include("../../../wp-load.php"); <- deviner l'emplacement du fichier wordpress.

en haut du fichier php.

1
Brady

La bonne façon de gérer cela consiste à utiliser le fichier admin-ajax.php de WP, au lieu du vôtre. Voir cette page du Codex:

http://codex.wordpress.org/AJAX_in_Plugins#Ajax_on_the_Viewer-Facing_Side

Au lieu de placer le code dans un plugin, placez-le simplement dans votre fichier functions.php.

1
scribu