0

このコードは最適ではなく、より良い方法を見つけるのに苦労しています。

基本的に、WordPress データベースからランダムな投稿を取得する以下のファイルに ajax リクエストを送信するボタンをクリックします。これらは頻繁に繰り返され、機能していないという印象を与えます。これに対処するために、現在のID =古いIDであるかどうかを確認しました。同じ場合は新しい投稿を取得しますが、内部で別のwpqueryを実行する方法が見つかりませんでした別のクエリ。

<?php
    require_once('../../../wp-blog-header.php');
    header('HTTP/1.1 200 OK');
?>
    <span id="postss"><?php
        query_posts(array(
            'cat' => 39,
            'order' => 'ASC', // ASC
            'orderby' => 'rand',
            'showposts' => 1,
            ));
        $wp_query->is_archive = true; $wp_query->is_home = false;
        if (have_posts()) : while (have_posts()) : the_post();

        session_start();
        if(!isset($_SESSION['oldId']))
        {
            $_SESSION['oldId'] = get_the_id();
        }else{
            $curId = get_the_id();
            if($_SESSION['oldId'] == $curId)
            {
                header("Location: http://website.com/testimonialPull.php");     
            }else{


    the_content();
        }
        $_SESSION['oldId'] = get_the_id();
    }

    endwhile; endif;

?>

したがって、ヘッダー リクエストの送信には、新しい投稿が表示されるまでに約 1 秒かかりますが、通常は約 2/10 秒かかります。これを行うためのより効率的で高速な方法はありますか?

4

1 に答える 1

0

query_posts()次のように呼び出しを変更するだけです。

$args = array(
    'cat' => 39,
    'order' => 'ASC', // ASC
    'orderby' => 'rand',
    'showposts' => 1,
);
if ( isset( $_SESSION['oldId'] ) {
    $args['post__not_in'] = array( $_SESSION['oldId'] );
}
query_posts( $args );

引数はpost__not_in、クエリから除外される ID の配列を指定します。

WP_Queryクラスとそれが受け入れる引数(受け入れられるものと一致するもの)について詳しく知りたい場合query_posts()は、コーデックスページを参照してください - Class Reference/WP Query .

initPP:アクション フックに関数をフックしてクエリを作成しない理由がわかりませんhttp://website.com/?pullTestimonial=1(これがプロセスを遅くするかどうかはわかりませんが、通常はこれを達成する方法です)

コード例を次に示します。

function fetch_testimonial() {
    if ( isset( $_GET['pullTestimonial'] ) ) {
        // Your code that will be executed goes here
        exit;
    }
}
add_action('init', 'fetch_testimonial', 10);

これで得られるのは、ルート ディレクトリのどこかにファイルを配置する必要がない、またはリンクがhttp://website.com/wp-content/themes/mytheme/testimonialPull.phpのようにならないことです。

于 2012-11-14T11:45:36.490 に答える