kleza
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: 対象をユーザページ(author)に指定してフリーワード検索フォーラム: プラグイン
返信が含まれるトピック: WP Custom Fields Searchを使ったTypesによるカスタムフィールド(ユーザーフィーフォーラム: 使い方全般
返信が含まれるトピック: usermetaテーブル内のカスタムフィールドの値の一覧を出力したいkjmtshさん
あけましておめでとうございます。
お正月から早速のアドバイス有難うございます!クエリの意味まで丁寧に解説くださり
大変感謝です。最期のアドバイスもごもっともですね。
自分もこちらに投稿してからそれで十分、むしろ
いいのでは?と思っていたのでやはりという感じです(^^ゞ47都道府県と決まっているのですものね。
とはいえ、またひとつ勉強になりました。
素早いコメント、丁寧なアドバイス
本当にありがとうございました。またお世話になることもあるかもしれませんが
今後共よろしくお願い申し上げます。フォーラム: 使い方全般
返信が含まれるトピック: カスタムフィールドを指定したユーザ検索がしたいまだ未熟なところはありますが
ある程度進めたので自己レス、報告とさせていただき
ひとまず解決済とさせていただきます。以下を参考に
http://www.tecking.org/archives/2636functions.php
/** 絞込検索 **/ global $my_public_query_vars; $my_public_query_vars = array( // Users Fieldsが増えたらそのフィールド名を足すこと 'wpcf-address_pref', 'wpcf-address_city', 'wpcf-facility_village', 'wpcf-facility_parking', 'wpcf-facility_proshop', 'wpcf-facility_locker' ); add_filter( 'query_vars', 'my_query_vars' ); function my_query_vars( $public_query_vars ) { global $my_public_query_vars; return array_merge( $public_query_vars, $my_public_query_vars ); } add_action( 'pre_get_posts', 'my_pre_get_posts' ); function my_pre_get_posts( $query ) { if ( ! is_admin() && is_post_type_archive( 'searchform' ) /* && 'staff' == $query->get( 'post_type' ) */ ) { $meta_query = array(); global $my_public_query_vars; foreach ( $my_public_query_vars as $key ) { if ( $val = $query->get( $key ) ) { $meta_query[] = array( 'key' => $key, 'value' => $val, 'compare' => 'LIKE' ); } } if ( ! empty( $meta_query ) ) { $query->set( 'meta_query', $meta_query ); } } }
検索結果表示(searchform.php)
<?php $address_pref = $_GET['wpcf-address_pref']; $address_city = $_GET['wpcf-address_city']; $address_village = $_GET['wpcf-address_village']; $facility_parking = $_GET['wpcf-facility_parking']; $facility_proshop = $_GET['wpcf-facility_proshop']; $facility_locker = $_GET['wpcf-facility_locker']; $args = array( 'meta_query' => array( array( 'key' => 'wpcf-address_pref', 'value' => $address_pref, 'compare' => 'LIKE' ), array( 'key' => 'wpcf-address_city', 'value' => $address_city, 'compare' => 'LIKE' ), array( 'key' => 'wpcf-address_village', 'value' => $address_village, 'compare' => 'LIKE' ), array( 'key' => 'wpcf-facility_parking', 'value' => $facility_parking, 'compare' => '=' ), array( 'key' => 'wpcf-facility_proshop', 'value' => $facility_proshop, 'compare' => '=' ), array( 'key' => 'wpcf-facility_locker', 'value' => $facility_locker, 'compare' => '=' ) ) ); $user_query = new WP_User_Query( $args ); // User Loop if ( !empty( $user_query->results ) ) { foreach ( $user_query->results as $user ) { echo '<a href="/author/' . $user->data->user_nicename . '">' . $user->data->display_name . '</a><br>'; } } else { echo 'No users found.'; } ?>
検索フォーム設置ページ(固定ページ)
<form role="search" method="get" action="<?php echo esc_url( home_url( '/serchform/' ) ); ?>"> <select name="wpcf-address_pref"> <option value="" selected>都道府県を選択</option> <option value="東京都">東京都</option> </select> <select name="wpcf-address_city"> <option value="" selected>市区を選択</option> <option value="豊島区">豊島区</option> <option value="墨田区">墨田区</option> </select> <br> <input type="checkbox" name="wpcf-facility_parking" value="1">駐車場<br /> <input type="checkbox" name="wpcf-facility_proshop" value="1">プロショップ<br /> <input type="checkbox" name="wpcf-facility_locker" value="1">ロッカー/更衣室<br /> <input type="submit" class="submit" name="submit" value="検索" /> </form>
これでまずは求める結果は得られていますが、実際は都道府県や市区のカスタムフィールドをループで取得しないといけないので(でないと増えるごとに手動で追加しないといけない)引き続き試行錯誤してみようと思います。
フォーラム: 使い方全般
返信が含まれるトピック: カスタムフィールドの値を使った絞込検索(対象はauthor)を実装したいIshihara様
コメントありがとうございます。
なるほど、自分が実装しようとしていたものでは
そもそも対象が違っていたのですね。カスタムフィールドを
指定できればいいのかと単純に考えていました。お恥ずかしい。。アドバイスもありがとうございます。
検索のカスタマイズはもちろんのこと
WP_User_Queryも扱ったことはありませんが
まずはIshihara様のアドバイスで試みてみようと思います。ユーザ情報へのメタ情報の追加でなくカスタム投稿で
というアドバイスもわかります。が、本件では
各ユーザごとにプロフィールを更新できるように
する必要がありまして。運営側でやることであれば
もっとスムーズに運べるのですが。まずは明後日の方向を向いていたことがわかった
だけでも助かりました。ありがとうございます。フォーラム: 使い方全般
返信が含まれるトピック: author.phpでユーザのカスタムフィールドを出力したい上記コメント、訂正します。
<?php echo types_render_usermeta_field("カスタムフィールド名", array("user_id" => $author)); ?>
でした。($user_IDではなく$author)
$user_IDだとログインしているユーザのIDを取得してました。重ね重ねお恥ずかしい限りです(^_^;) author.phpでは$authorでユーザIDを取得でき、求める結果を得ることができました。
フォーラム: 使い方全般
返信が含まれるトピック: author.phpでユーザのカスタムフィールドを出力したいjim912さん
いつもお世話になっております。
参考記事をお知らせくださりありがとうございます。
ちゃんと書いてあるのに全然気づかなかったです。
お恥ずかしい。<?php echo types_render_usermeta_field("カスタムフィールド名", array("user_id" => $user_ID)); ?>
で出力出来ました。
ありがとうございます。
フォーラム: 使い方全般
返信が含まれるトピック: デフォルトの「投稿」が一件もないとユーザプロフィールが表示されない以下の記述で確認しました。
投稿が一件もなくてもプロフィールページに
アクセスすることができ、登録内容が表示されます。<?php $user = new WP_User( get_the_author_meta( 'ID', get_query_var( 'author' ) ) ); ?> <?php // 権限が「center_user」のプロフィールを出力 if( in_array( 'center_user', $user->roles ) ) : ?> <?php echo 'center_user'; ?> <?php // 権限が「contributor」のプロフィールを出力 elseif( in_array( 'contributor', $user->roles ) ) : ?> <?php echo 'contributor'; ?> <?php endif; ?>
jim912様、あらためてお礼申し上げます。
ありがとうございました。フォーラム: 使い方全般
返信が含まれるトピック: デフォルトの「投稿」が一件もないとユーザプロフィールが表示されない上記コメント、とんでもなく勘違いをしていました。
以下を読んでその勘違いがわかりました。フォーラム: 使い方全般
返信が含まれるトピック: デフォルトの「投稿」が一件もないとユーザプロフィールが表示されないjim912様
コメントありがとうございます。
示していただいた記述で投稿がない場合でも
プロフィールページにアクセス出来るようになりました。
ありがとうございます。権限が「author」の場合とそれ以外で出力する内容を
分けようとしており、以下でそれは出来ることが確認できました。<?php $user = new WP_User( get_query_var( 'author' ) ); ?> <?php if( in_array( 'author', $user->roles ) ) : // 投稿者の場合だけ出力 ?> <?php echo 'author'; ?> <?php else : ?> <?php echo 'other'; ?> <?php endif; ?>
が、権限を「寄稿者=contributor」で指定すると
なぜか望む結果が得られず(下記コード)
寄稿者ユーザでもそれ以外でも「other」を出力してしまうのです。<?php $user = new WP_User( get_query_var( 'contributor' ) ); ?> <?php if( in_array( 'contributor', $user->roles ) ) : // 投稿者の場合だけ出力 ?> <?php echo 'contributor'; ?> <?php else : ?> <?php echo 'other'; ?> <?php endif; ?>
ですが、本トピックについてはおかげ様で
解決できましたので、解決済とさせていただきます。
上記の問題については引き続き調べてみようと思います。また別トピックでお世話になるかもしれませんが
このたびはありがとうございました。今後ともよろしくお願い申し上げます。
フォーラム: 使い方全般
返信が含まれるトピック: デフォルトの「投稿」が一件もないとユーザプロフィールが表示されないjim912様
コメントありがとうございます。
失礼致しました。
確認が不十分でした。現在ユーザの権限グループによって
author.php内で出力を分けているつもりなのですが
指定権限グループ(以下の例ですと「center_user」)
のユーザが投稿をしていないと以下の出力の出し分けが
有効にならず「center_user」の場合も「author」の
部分で出力されてしまうのです。author.php
<!-- 権限が「center_user」のユーザ情報を出力 --> <?php // 記事を投稿した人のユーザIDからユーザ情報の取得 $user = new WP_User( get_the_author_meta( 'ID' ) ); // 権限が「center_user」だったら出力 if( in_array( 'center_user', $user->roles ) ) { echo(types_render_usermeta_field("name_center", array())); } ?> <!-- END 権限が「center_user」のユーザ情報を出力 --> <!-- 投稿者-authorの場合に表示 --> <?php $user = new WP_User( get_the_author_meta( 'ID' ) ); // 記事を投稿した人のユーザIDからユーザ情報の取得 ?> <?php if( in_array( 'author', $user->roles ) ) : // 投稿者の場合だけ出力 ?> <h3 class="tit">投稿記者紹介</h3> <div class="author_wrapper"> <div class="div_author_1"> <div class="left"> <p><img src="<?php bloginfo( template_url ); ?>/images/page/tit_prof.jpg" width="423" height="15" /></p> <p class="name"><?php the_author_meta( nickname, $author ); ?></p> <p class="birthday">生年月日;<?php the_author_meta( bd, $author ); ?></p> <p class="from">出身地;<?php the_author_meta( from, $author ); ?></p> <p class="prof"><?php the_author_meta( description, $author ); ?></p> <!--floatL--></div> <div class="right"><?php echo get_simple_local_avatar($author,225); ?></div> <!--div_author_1--></div> <div class="div_author_2"> <p><img src="<?php bloginfo( template_url ); ?>/images/page/tit_article.jpg" width="703" height="15" /></p> <ul> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <li> <p class="date"><?php the_time('Y/n/j'); ?></p> <p class="title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> </li> <?php endwhile; ?> <?php endif; ?> </ul> </div> <!--div_author_2--> </div> <!--author_wrapper--> <?php endif; ?> <!-- // 投稿者-authorの場合に表示 -->
記述の仕方に問題があるのでしょうか。
フォーラム: 使い方全般
返信が含まれるトピック: ACFを使ったカスタムフィールドの更新日時で最新のものを出力するちゃんと調べて確認できてませんが
そもそもカスタムフィールドの値が
投稿日時の情報を持っていないような。他の実装方法を検討することにします。
失礼しました。
フォーラム: 使い方全般
返信が含まれるトピック: プラグインAdvanced Custom Fieldsで追加したフィールドの値を任意の場所で表示the_author_metaの引数に該当のフィールド名を指定することで叶いました。
<?php the_author_meta('news1'); ?>
大げさに考えすぎてました(^^ゞ
ありがとうございました。
フォーラム: 使い方全般
返信が含まれるトピック: プラグインAdvanced Custom Fieldsで追加したフィールドの値を任意の場所で表示gatespaceさん
いつもお世話になっております。
ACFにちゃんとサンプルありましたね。
すいません、まず自分でちゃんと見ないとですね。ありがとうございます。
やってみます。実装出来ましたらこちらに報告した上で
解決済みにさせていただきます。フォーラム: 使い方全般
返信が含まれるトピック: 権限グループで判別して使用するテンプレートを指定する