サポート » 使い方全般 » アカウントに設定されたCF値に合致するユーザーの書いた記事を検索する

  • 7st

    (@7st)


    お世話になります。

    現在、寄稿者アカウントが1000を超える大規模なサイトを作っており、その寄稿者アカウントはカスタムフィールドを持っており、店舗名や店舗住所を設定しています。

    サイトに検索ボックスを2つ設ける予定で、それぞれ地域名、店舗名で検索をするボックスになります。

    たとえば、地域名に「埼玉県」と入れて検索した場合、アカウントのCFの「店舗住所」に「埼玉県」を含むユーザー(店舗)が、書いた記事をすべて検索結果に出したい場合、どのようにすればいいのかわかりません。。。

    要するに
    「検索ワードを照らし合わせる対象が、特定のCFだけに限る(記事本文とかは関係ない)」
    「しかもCFは記事そのものではなく、その記事を書いたアカウントに設定されたCF」

    こういうことは可能なのでしょうか。。。?

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • gblsm

    (@gblsm)

    可能かどうかわかりませんが、下記の過去トピックが似たことを実現しているので、参考になるかもしれません。
    フォーラム » カスタムフィールドのソート

    過去トピックは投稿テーブル(posts)と投稿カスタムフィールドのテーブル(postmeta)の2つをSQLのJOINで結合しているのですが、それを、postsとユーザーのテーブル(users)とユーザーのカスタムフィールドのテーブル(usermeta)の3つの結合に変更すれば良さそうに思います。

    gblsm

    (@gblsm)

    7stさん、中途半端なコメントになってしまいますが。。。

    先ほどの参考トピック
    フォーラム » カスタムフィールドのソート

    に出てくるSQL文を、7stさんのやりたいことに合わせると下記のようになりました。

    <?php
    global $wpdb;
    $sql = "SELECT
    	p.ID,
    	p.post_title,
    	u.user_login AS login,
    	um.meta_key AS grp,
    	um.meta_value AS grpval
    FROM
    	$wpdb->posts AS p
    INNER JOIN
    	$wpdb->users AS u ON u.ID=p.post_author
    INNER JOIN
    	$wpdb->usermeta AS um ON um.user_id=u.ID
    WHERE
    	(p.post_type='post' AND p.post_status='publish')
    AND
    	um.meta_key='tochi'
    AND
    	um.meta_value='東京'
    ";
    $res = $wpdb->get_results($sql);
    print_r($res);
    ?>

    この後は(参考トピックに書かれているように)テーマの中で使えるように書き直す必要がありますが、その部分は私も経験がなくてわかりません。どなたかコメントを頂けるとよいのですが、すみません。

    トピック投稿者 7st

    (@7st)

    返信遅くなってすみません。
    ありがとうございます!
    試してみます!

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「アカウントに設定されたCF値に合致するユーザーの書いた記事を検索する」には新たに返信することはできません。