サポート » 使い方全般 » ajaxでもっと見るボタンの追加(関連する記事のみ)

  • 解決済 aki

    (@akistar02)


    WordPress ページングはやめてAjaxローディングにする

    このサイトを元にもっとみるボタンをajaxで表示させています。
    これの「関連する記事」のみを読み込む処理を書きたいのですが、どうしたらいいかを教えてもらえませんか?

    「関連」とする条件はたとえばタグでもいいです。

    私がやろうとした方法は、一度すべて読み込んで、タグなどが同じではない記事は削除、という風にしようとしていたのですが、それだと一度読み込む分重くなりそうで・・・

    よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 「関連」とする条件はたとえばタグでもいいです。

    このタグをどうやって、JavaScript に渡しますか? 最初に表示される投稿が、

    <?php query_posts('posts_per_page=5'); ?>

    で取得されていて、表示するのはタイトルと抜粋だけです(get_posts() で十分だと思いますが)。このとき、JavaScript はタグを知る手段がありません。それに、投稿が 5 つあるということは、タグも 5 つ(くらい)あることになるので、どれを使いますか? また、2度目の取得以降では、タグもカテゴリも取ってきていませんので、はやり知る手段がありません。強いて言えば、2 度目のクエリを、

    SELECT
        p.ID,
        p.post_title,
        p.post_excerpt,
        t.name
    FROM
        $wpdb->posts AS p
    LEFT JOIN
        $wpdb->term_relationships AS tr
    ON
        tr.object_id=p.ID
    LEFT JOIN
        $wpdb->terms AS t
    ON
        t.term_id=tr.term_taxonomy_id
    WHERE
        p.post_type='post' AND p.post_status='publish'
    ORDER BY
        p.post_date DESC
    LIMIT
        $next_now_post_num, $next_get_post_num;

    こんな感じにすれば、カテゴリとタグが一緒に取れますから、JavaScript 側でコントロールできますが…どうなんでしょうかね? 一応、WHERE 以下に、AND p.name='タグ名'とすると、そのタグで検索となります。あとは工夫してみてください。

    アイディアとしては、akistar02 さんの

    一度すべて読み込んで

    のほうがいいような気がします。元記事は何度もデータベースアクセスを繰り返しますが、画面推移がいやなら、1 回で読み込んで、表示を JavaScript でコントロールしたほうが速いです。5 個ずつの投稿を 10 回のアクセスで読み込むのと、50 個の記事を 1 回のアクセスで読み込むのを比べると、後者の方は、たぶん 10 分の 1 以下の時間になるはずです。

    以下、余計なお世話かもしれませんが…

    元記事の php ファイルは、wp-config.php を読み込んでいて、しかも、どこからでも、だれでもが実行できるようになっています。さらに、$_POST 変数のデータをそのまま SQL 文に入れているという状態です。これは何を意味するか、というと、SQL インジェクションやり放題できるということです。たいていの WordPress サイトは、.htaccess で、ファイルやディレクトリが存在しない場合は index.php に飛ばしますが、ファイルが存在するときには、そのまま実行できるようになっていると思いますので、迂闊にこのファイルを置いたら、データベースの中身を全部読まれる危険性があることは知っておいてください。

    aki

    (@akistar02)

    すいません。
    何とかなりました。

    ありがとうございます。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「ajaxでもっと見るボタンの追加(関連する記事のみ)」には新たに返信することはできません。