web-dev-qa-db-ja.com

X秒後に投稿リストを自動更新

私はワードプレスで新しいです、そして私は本当にここで助けが必要です。私のメインサイト、すべての投稿の履歴書(排泄物)をページ付けしてリストにしましょう。しかし、ユーザーが新しい投稿を公開するとき、メインページでそれを見る唯一の方法はそれをリロードすることです...私はFacebookのように自動的に新しい投稿を表示する方法があるかどうか知りたいです....

私は今までそれを行う方法を見つけませんでした。

私は私のindex.php(/ 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; ?>

上記のコードを(同じディレクトリの)load.phpに入れ、index.phpの中を次のように置き換えます。

<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>

しかし、それはうまくいきません...私はこのエラーを得ています:致命的なエラー:1行目の/var/www/RMON/blog/wp-content/themes/wp_blogger/load.phpで未定義の関数have_posts()を呼び出します1

2
Leibovich

あなたの答えは間違いなくAJAXの領域内にあります。フォームを使用している場合は、次のようにonsubmit eventListenerreturn false;(およびその他の必要な属性)に設定してみてください。

<form onsubmit="return false;">

次に投稿を送信し、PHPを使用してそれを解析します。希望する効果とユーザーの入力に応じて、待機中のAJAXスクリプトに対する応答をエコーアウトします。 ajax.repsonseTextと、レスポンスが探しているものと等しいかどうかに応じて、ページを更新せずに希望のHTML要素のinnerHTMLをあなたが望むものに等しく設定できます。おそらくもっとこのようなもの:

if(ajax.responseText != "error") {
    document.getElementById("userInputDiv").innerHTML = ajax.responseText;
}
1
les

それはAJAXと関係があることは自明であるはずです(それはまさにこの種のことをするために発明されました)。 X秒ごとに最新の投稿を要求するAJAXリクエストを送信し、返された内容でdivの内容を変更する(または新しい場合はよりスマートにして新しいdivを追加する)JavaScriptコードが必要です。コンテンツ)

サーバーサイドでは、特定のリクエストを処理して最新の投稿のコンテンツを返すためのハンドラを追加する必要があります。正しい方法を学ぶには、このコーデックスページ http://codex.wordpress.org/AJAX_in_Plugins を参照してください。

0
Mark Kaplun