フォーラムへの返信

15件の返信を表示中 - 61 - 75件目 (全88件中)
  • トピック投稿者 JunichiK

    (@junichik)

    gblsmさん、お世話になります。

    プラグインの修正につきましては、仰せのとおり、別にトピックを立てさせていただきます。

    ユーザーIDを取り出す方法は、下記のようにしてみましたが、うまくいきません。
    どこが間違っているのでしょうか?根本的に間違っているのでしょうか?

    <?php
    $user_id = get_current_user_id();
    $myTerms = get_the_terms( $user_id, 'user-group' );
     foreach( $myTerms as $myTerm ) {
      $tempUsers = get_objects_in_term( $myTerm, 'user-group' );
       foreach( $tempUsers as $tempUser ) {
        $user = get_user_by( 'ID', $tempUser );
        $userIDs = $user->ID;
       }
     }
    echo $userIDs;
    ?>

    よろしくお願い致します。

    トピック投稿者 JunichiK

    (@junichik)

    gblsmさん、お世話になります。度々すみません。

    よくよく考えますと、複数グループに所属させますと、操作ミスなどによってグループ分けの間違いなどを引き起こす可能性が大きくなりますので、グループは単一にしようと思います。
    その代わり、複数グループを選択出来ないような処置が必要になってきますが、これはプラグインの範囲になるでしょうか。

    それから、アドバイスいただいた上記方法で、ユーザーIDを取り出すには、どのような関数を使用すれば良いでしょうか?

    知識不足でご迷惑おかけいたしますが、何卒、引き続きよろしくお願い致します。

    トピック投稿者 JunichiK

    (@junichik)

    gblsmさん、お世話になります。

    現状では所属グループが複数になる予定はないのですが、プラグインの特性により、複数グループのタームを割り当てることが可能なので、使用者に渡した後のことを考えますと、その場合の対応をしておかないといけないと思いました。
    複数グループのタームを割り当てられないような構造にしておくのも有りなのですが、その場合は更に困難になるように思いましたので。

    gblsmさんのアドバイスを受けまして、少し試行錯誤してみます。
    引き続きよろしくお願い致します。

    トピック投稿者 JunichiK

    (@junichik)

    gblsmさん、お世話になります。

    get_the_term_list()が返した値はアンカータグを含んでおりました。
    それで、get_the_terms()で下記のようにしますと、正常に取得できました。

    <?php
    $user_terms = get_the_terms( $user_id, 'user-group' );
    $termnames = array();
    foreach( $user_terms as $user_term ) {
    	array_push( $termnames, $user_term->name );
    }
    $termname = join($termnames);
    echo $termname;
    ?>

    ただし、やはり、タームが複数の場合はダメみたいなので、もっと考えないといけないようです。
    wp_get_object_terms()をCodex等で調べてみます。

    それから、目的はユーザーIDの取得なので、ご紹介いただいたリンク先のコード(下記)の変数$userIDsから直接取得できないかな…と思ったのですが、私の知識では厳しいようです。

    add_shortcode('group-list', 'my_group_list_shortcode');
    function my_group_list_shortcode( $atts ) {
        // Get the global $wpdb object
        global $wpdb;
    
        // Extract the parameters and set the default
        extract ( shortcode_atts( array(
            'group' => 'No Group' // No Group is a defined user-group
            ), $atts ) );
    
        // The taxonomy name will be used to get the objects assigned to that group
        $taxonomy = 'user-group';
    
        // Use a dBase query to get the ID of the user group
        $userGroupID = $wpdb->get_var(
                        $wpdb->prepare("SELECT term_id
                            FROM {$wpdb->terms} t
                            WHERE t.name = %s", $group));
    
        // Now grab the object IDs (aka user IDs) associated with the user-group
        $userIDs = get_objects_in_term($userGroupID, $taxonomy);
    
        // Check if any user IDs were returned; if so, display!
        // If not, notify visitor none were found.
        if ($userIDs) {
            $content = "<div class='group-list'> <ul>";
            foreach( $userIDs as $userID ) {
                $user = get_user_by('id', $userID);
                $content .= "<li>";
                $content .= get_avatar( $user->ID, 70 );
                $content .= "<h3>" . $user->display_name . "</h3>";
                $content .= "<p><a href='". get_author_posts_url( $user->ID ) . "' class='more-info-icon'>More info</a>";
                $content .= "<!-- add more here --></p>";
                $content .= "</li>";
            }
            $content .= "</ul></div>";
        } else {
            $content =
            "<div class='group-list group-list-none'>Returned no results</div>";
    
        }
        return $content;
    }

    ちなみに、ユーザーIDを取得して何がしたいかと申しますと、プラグインContact Form DBのショートコードのfilterに利用して、そのユーザーIDのデータベースのみを表示させたいわけなのですが、こちらも複数ユーザーですとうまくいかないようですので、それはまた別のスレッドをたてさせていただこうと考えております。

    引き続き、試行錯誤してみますので、もうしばらくお付き合いくださいますようお願いいたします。

    トピック投稿者 JunichiK

    (@junichik)

    gblsmさん、ありがとうございます。

    まず、taxonomy-user-group.phpを使用するほうは、なるほど、そういうことだったのですね。
    私はauthor.phpで取得する必要があるので、$term_idの値はauthorのユーザーID、$termの値は取得出来ていませんでした。
    別途taxonomy-user-group.phpを作って読み込む方法もあるかもしれませんが、まずはご紹介くださった別のリンクのコードを試してみました。

    公開されているコードをそのまま使用し、ショートコードのグループ名を直接記入しますと、正常に動作します。
    <?php echo do_shortcode('[group-list group="テストグループ"]'); ?>

    しかし、目的はログインユーザーのグループと同じグループに属するユーザーIDの取得ですので、下記のようにしましたが、取得できません。
    ショートコード内で変数を使う方法が間違っているのでしょうか?
    もしくは、get_the_term_list()ではダメなのでしょうか?

    <?php $user_id = get_current_user_id(); ?>
    <?php $user_terms = get_the_term_list( $user_id, 'user-group' );
     ?>
    <?php echo do_shortcode('[group-list group='.$user_terms.']'); ?>

    また、所属グループが仮に複数だったとしたら、上記ショートコードでは対応出来なさそうに思うのですが、どうでしょう?(現状では所属グループが複数になる予定はございません)

    いろいろと試行錯誤しておりますが、なかなか思うようにいきませんので、何卒、よろしくお願いいたします。

    トピック投稿者 JunichiK

    (@junichik)

    ちなみに、
    <?php echo var_dump($userID); ?>
    としますと、ページに下記のように表示されます。

    array(1) { [“invalid_taxonomy”]=> array(1) { [0]=> string(42) “不正なタクソノミー分類です。” } } array(0) { }

    register_taxonomy()によるユーザーのグループ分けは、下記のプラグインを使用しているのですが、プラグイン側に何か問題があるのでしょうか?

    https://wordpress.org/plugins/user-groups/

    引き続き、よろしくお願い申し上げます。

    トピック投稿者 JunichiK

    (@junichik)

    gblsmさん、ありがとうございます。
    get_objects_in_term()は初めて知りました。

    ご紹介いただいたリンクを参考に、下記のようにしてみましたが、
    ページ上では、Array Arrayとしか表示されません。
    どこが間違っているのでしょうか?

    <?php
    $term_id = get_queried_object_id();
    $term = get_queried_object();
    
    $users = get_objects_in_term( $term_id, $term->taxonomy );
    
    if ( !empty( $users ) ) {
    ?>
    	<?php foreach ( $users as $user_id ) { ?>
    
    		<?php echo $user_id; ?>
    
    	<?php } ?>
    <?php } ?>

    多分、基本的なことが間違っていると思うのですが、知識不足のため、分かりません。
    何卒、ご教示のほどよろしくお願いいたします。

    トピック投稿者 JunichiK

    (@junichik)

    gblsmさん、ありがとうございます。
    ググってもそれらしい記事にたどり着かないということは、不可能なのでしょうか…。

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

    フォーラム: 使い方全般
    返信が含まれるトピック: 各ユーザーごとのマイページを実現する方法
    トピック投稿者 JunichiK

    (@junichik)

    Daisukeさん、ありがとうございました。

    とりあえず、Advanced Custom Fieldsでユーザープロフィールに真偽判定のチェックボックスを追加して、それで対応することとしました。
    ご紹介いただいたUser Groupsでグループごとのユーザー一覧表示は可能ですので、その中から特権を与えるユーザーのプロフィールを開いてもらってチェックしてもらうという仕様にします。
    一覧表示では、チェックボックスの判定が真の場合は1となりますので、確認は出来る仕様です。

    いろいろとご教示くださり、ありがとうございました。
    問題は山積で、別のスレッドもたてましたので、今後ともよろしくお願いいたします。

    トピック投稿者 JunichiK

    (@junichik)

    すみません、タイトルがおかしいような気がしました。
    「同じタームに属するユーザー」とするのが正しいですね。
    また、投稿内容が簡潔すぎたと思いましたので、補足いたします。

    別の投稿でご指導いただき、register_taxonomy()の第二引数に’user’を指定する方法でグループ分けするプラグインを使用して、user-groupというタクソノミーで、ユーザーをグループ分けしております。
    そのうえで例えば、

    <?php $user_id = get_current_user_id(); ?>
    
    <?php the_terms( $author, 'user-group' ); ?> //authorページユーザーのグループ
    <?php the_terms( $user_id, 'user-group' ); ?> //ログインユーザーのグループ

    というようにタームの取得はできておりますが、
    逆に、例えば、ログインユーザーと同じタームに属するユーザーの一覧やユーザーIDを取得したいのです。

    何卒よろしくお願い申し上げます。

    フォーラム: プラグイン
    返信が含まれるトピック: Contact Form DBのデータをユーザーのみ閲覧
    トピック投稿者 JunichiK

    (@junichik)

    すみません、解決済みです。

    フォーラム: プラグイン
    返信が含まれるトピック: Contact Form DBのデータをユーザーのみ閲覧
    トピック投稿者 JunichiK

    (@junichik)

    すみません、Contact Form DBのショートコード作成画面をよく読んでおりませんでした。
    「表示する行/送信データの指定」のfilterを指定することで自己解決いたしました。
    ただし、変数を使いたかったので、下記のようにしました。

    <?php $user_id = get_current_user_id(); ?>
    
    [cfdb-table form="フォーム" filter="your-id='.$user_id.'"]

    Contact Form DBについてはまだお聞きしたいことがございますが、この件に関してはいったん解決済みといたします。

    フォーラム: 使い方全般
    返信が含まれるトピック: 各ユーザーごとのマイページを実現する方法
    トピック投稿者 JunichiK

    (@junichik)

    お世話になります。

    Advanced Custom Fieldsというプラグインを試してみました。
    ユーザープロフィールにチェックボックスは追加できますが、ユーザー一覧にチェックボックスを表示させることは出来ないようです。
    やはり、ユーザー一覧表示でチェックボックスを操作することは不可能なのでしょうか。

    フォーラム: 使い方全般
    返信が含まれるトピック: 各ユーザーごとのマイページを実現する方法
    トピック投稿者 JunichiK

    (@junichik)

    ユーザープロフィールページに項目を追加して、それらを一覧にも表示させるには、

    //▼ユーザープロフィールに項目追加
    function custom_user_meta($custom_field) {
    	//項目追加
    	$custom_field['user_authority'] = '特権有無';
    	return $custom_field;
    }
    add_filter('user_contactmethods', 'custom_user_meta', 10, 1);
    //▼ユーザー一覧に項目追加
    function custom_users_columns( $columns ) {
    	$columns['user_authority'] = '特権有無';
    	return $columns;
    }
    function custom_users_custom_column( $dummy, $column, $user_id ) {
    	if ( $column == 'user_authority' ) {
    		$user_info = get_userdata($user_id);
    		return $user_info->user_authority;
    	}
    }
    add_filter( 'manage_users_columns', 'custom_users_columns' );
    add_filter( 'manage_users_custom_column', 'custom_users_custom_column', 10, 3 );

    で出来そうなのですが、その項目をチェックボックスにする方法が分かりません。

    何か方法があるのでしょうか?よろしくお願いいたします。

    フォーラム: 使い方全般
    返信が含まれるトピック: 各ユーザーごとのマイページを実現する方法
    トピック投稿者 JunichiK

    (@junichik)

    なるほど、理想的な形ですね。
    ご紹介いただいたUser Groupsプラグインで、グループごとにユーザーリストを表示することは出来ております。
    ですので、問題は、ご提案の3番「各ユーザの横のチェックボックスを入れるか外すかだけで特権ユーザの指定ができる」を実現する方法ですね。
    そういったプラグインでもなければ難しいように思うのですが、プラグインなしでも可能なことなのでしょうか?

    よろしくお願いいたします。

15件の返信を表示中 - 61 - 75件目 (全88件中)