web-dev-qa-db-ja.com

Ajax経由で呼び出されたファイルでWordPressの機能にアクセスできない

私はjQueryを使用して新鮮な記事をリロードしようとしています。私の知る限りでは、ページ内のdivの内容をリロードすることはできないので、ファイルをそのdivにリロードします。

問題は、ロードされたファイルに 致命的エラーが表示されることです。未定義関数wp_query()の呼び出し

テーマディレクトリ内に新しく作成されたファイルに関数を実装して正しく機能させるにはどうすればよいですか?

これは私のjQueryです

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

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

そしてこれは私がreloadhomeposts.phpに持っているものです(私は内容を削除しました)

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

このエラーの原因は、WordPressシステムにロードせずにファイルをロードしているため、wp_query()が存在しないことです。

クイックフィックスは以下のとおりです。

include("../../../wp-load.php"); < - ワードプレスファイルの場所を推測します。

phpファイルの先頭にあります。

1
Brady

これを処理する正しい方法はあなた自身の代わりにWPのadmin-ajax.phpファイルを使うことです。このコーデックスページを参照してください。

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

コードをプラグインに入れるのではなく、単にfunctions.phpファイルに入れるだけです。

1
scribu