サポート » プラグイン » wp-members検索結果のヒット数

  • 解決済 fumidalat

    (@fumidalat)


    こんにちは
    wp-membersでメンバーサイトを作り、検索結果を得ようとしています。
    その際、メンバー用の投稿はメンバー用にだけ、一般用は一般用にだけ表示されます。
    カスタムフィールドテンプレートのチェックボックスがチェックされていたらメンバー用、チェックなしなら一般用です。
    それは下記で検索結果が得れるのですが、そのときに「検索結果は〇〇件です」という表示を出したいのです。
    しかし、
    <?php echo $wp_query->found_posts; ?>
    などで件数を得ると全体の件数が得られてしまします

    会員用、また一般用だけの件数を得たいのですが、どうすればいいでしょうか?

    よろしくお願いします。

    <?php
    query_posts( array(
    ‘tax_query’ => $taxquerysp,
    ‘meta_query’ => $metaquerysp,
    ‘s’ => $s,
    ‘posts_per_page’ => 100,
    ‘paged’ => $paged,
    ‘order’ => ‘ASC’,
    )
    );
    ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    <?php $test1 = post_custom(‘members’); ?>
    <?php if ($test1 == “member”): ?>
    <?php if (is_user_logged_in()) : ?>
    <h2>“><?php the_title(); ?></h2>
    <div><?php the_content(); ?></div>
    <?php endif; ?> <?php endif; ?>
    <?php $test1 != post_custom(‘members’); ?>
    <?php if ($test1 != “member”): ?>
    <?php if ( ! is_user_logged_in()) : ?>

    <h2>“><?php the_title(); ?></h2>
    <div><?php the_content(); ?></div>
    <?php endif; ?>
    <?php endif;?>
    <?php endwhile; ?>
    <?php else : ?>
    <p>物件が見つかりませんでした。 </p>
    <?php endif; ?>
    <?php wp_reset_query(); ?>

15件の返信を表示中 - 1 - 15件目 (全16件中)
  • <?php echo $wp_query->found_posts; ?>

    は、query_posts() と wp_reset_query() の間に記述していますか?

    はい。query_posts() と wp_reset_query() の間に記述しています。そうすると検索件数全部の数が表示され、メンバー用の数にはなりません。メンバーでない数とメンバー用の数の合計になってしまします

    下記のように変更して、

    query_posts( array(

    $posts = query_posts( array(

    <?php echo count( $posts ); ?>

    ではどうでしょうか。

    ありがとうございます
    しかしながら結果は同じでした

    $metaquerysp にはどのようなコードで値を代入しているのでしょうか?

    $metaquerysp に条件を追加するのはどうでしょうか?

    if ( is_user_logged_in() ) {
    	$metaquerysp[] = array( 'key' => 'members', 'value' => 'member' );
    } else {
    	$metaquerysp[] = array( 'key' => 'members', 'compare' => 'NOT EXISTS' );
    }

    $metaqueryspには
    $metaquerysp[‘relation’] = ‘OR’;

    となっています。

    if ( is_user_logged_in() ) {
    $metaquerysp[] = array( ‘key’ => ‘members’, ‘value’ => ‘member’ );
    } else {
    $metaquerysp[] = array( ‘key’ => ‘members’, ‘compare’ => ‘NOT EXISTS’ );
    }

    これは具体的にはどこにechoがはいるのでしょうか?

    何度もすみませんが、お手すきのときにでも結構ですので、よろしくお願いします。

    <?php if ( is_user_logged_in() ) {
    $metaquerysp[] = array( ‘key’ => ‘members’, ‘value’ => ‘member’ );
    echo $wp_query->found_posts;} else {
    $metaquerysp[] = array( ‘key’ => ‘members’, ‘compare’ => ‘NOT EXISTS’ );
    echo $wp_query->found_posts;} ?>

    このようにしたところ出力されましたが、結果は変わらずメンバー用一般用の総数となります

    これは具体的にはどこにechoがはいるのでしょうか?

    query_posts() と wp_reset_query() の間ではどうでしょうか?

    すみません。私がなにか勘違いしているようです。

    >$metaquerysp に条件を追加するのはどうでしょうか?
    >if ( is_user_logged_in() ) {
    > $metaquerysp[] = array( ‘key’ => ‘members’, ‘value’ => ‘member’ );
    >} else {
    > $metaquerysp[] = array( ‘key’ => ‘members’, ‘compare’ => ‘NOT EXISTS’ );
    >}

    というのが、わかりません。具体的にquery_posts() と wp_reset_query()  にどのように記述すればいいでしょうか?

    この問題、ヒット件数だけでなくページャーにも及んできていて、会員ページのページャーはすべての物件数で表示されるので、空のページまでページャーに出てきてしまいます
    なんとか解決したいです

    引き続きよろしくお願いします。

    ばらばらとすみません
    $metaquerysp
    の件ですが、下記の部分のことだったでしょうか?
    <?php
    query_posts( array(
    ‘tax_query’ => $taxquerysp,
    ‘meta_query’ => $metaquerysp,
    ‘s’ => $s,
    ‘posts_per_page’ => 12,
    ‘paged’ => $paged,
    ‘order’ => ‘ASC’,
    )
    );
    ?>

    <?php
    query_posts( array(

    <?php
    $metaquerysp = array();
    if ( is_user_logged_in() ) {
    	$metaquerysp[] = array( 'key' => 'members', 'value' => 'member' );
    } else {
    	$metaquerysp[] = array( 'key' => 'members', 'compare' => 'NOT EXISTS' );
    }
    query_posts( array(

    query_posts() と wp_reset_query() の間に、

    <?php echo $wp_query->found_posts; ?>

    ではどうなりますか?

    素晴らしい!

    意図していたことができました。
    大変ありがとうございました!!

    すみません。解決済みにしてしまいましたが

    if ( is_user_logged_in() ) {
    $metaquerysp[] = array( ‘key’ => ‘members’, ‘value’ => ‘member’ );
    } else {
    $metaquerysp[] = array( ‘key’ => ‘members’, ‘compare’ => ‘NOT EXISTS’ );
    }

    だとmembersはOKです
    members以外の場合はmembersの数も加えた総数にしたかったのですが、そうなりません

    よろしくお願いします。

    else {
    $metaquerysp[] = array( ‘key’ => ‘members’, ‘compare’ => ‘NOT EXISTS’ );
    }
    を削除でヒット件数は意図していたようになりましtが、
    検索条件に関わらず検索結果が全件数ヒットになってしましました

15件の返信を表示中 - 1 - 15件目 (全16件中)
  • このトピックに返信するにはログインが必要です。