サポート » プラグイン » Flamingoのカスタムフィールドキーについて

  • 解決済 hotori6996

    (@hotori6996)


    Flamingoはコンタクトフォーム7からのデータを蓄積するさいに、
    カスタムフィールドを作ってそこにデータを入れているとききました。
    そこで、

    $defaults = array(
    ‘meta_key’ => ‘post_authorフィールドのmeta_key’,
    ‘meta_value’ => ログインユーザーのID,
    );
    という風にして、ログイン中のユーザーが自分が作ったフォームのデータのみを
    閲覧できるようにしたいと考えています。

    しかし、Flamingoが作ったカスタムフィールドのmetaキーが不明です。
    Flamingoが作ったカスタムフィールドのmetaキーはどのような名称になっているのでしょうか。

    post_author
    _post_author
    _field_post_author
    _field__post_author
    post_author_meta

    など試してみましたがどれも該当しませんでした。

    ためしに

    $defaults = array(
    ‘meta_key’ => ‘_field_your_name’,
    ‘meta_value’ => ログインユーザーのID,
    );
    という設定をした場合はきちんと稼働したので、
    問題はカスタムフィールドキーが間違っているということだと思います。

    Flamingoで使用しているカスタムフィールドキーについて
    どうすれば確認できるのか、ご教示願います。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • Flamingoで使用しているカスタムフィールドキーについてどうすれば確認できるのか

    データベースを見るかコードを見るかの二択でしょうか。

    _email
    _name
    _props
    _last_contacted
    _subject
    _from
    _from_name
    _from_email
    _fields
    _meta
    _akismet
    _to
    トピック投稿者 hotori6996

    (@hotori6996)

    早速のご回答ありがとうございます!

    あげていただいたリストのキーをさっそくためしてみました。
    (二つのユーザーアカウント、二つのブラウザから検証しています)
    ですが、いづれも
    項目は見つかりませんでした。
    という結果でした。

    私も、コードを見て思い当たるものは試してみたのですが、
    いづれも該当せず、ここに質問した次第です。

    meta_key に何も指定せず、
    meta_value を $user -> user_email と指定すると
    実際に絞り込んでほしいpost_author_emailを無視して、
    your-emailの値とログインユーザーのemailが合致したpostが一覧表示されてしまいます。

    逆に、meta_key に _from_email を指定し、
    meta_value に何も指定しなかった場合、
    「項目は見つかりませんでした。」ではなく、全件表示されます。

    _from_email が post_author_emailフィールドのキーではないため、
    post_author_email の値を指定しても、_from_email は該当する値を持っていない。
    ということなのではないか?
    と考えているのですが、もしかしたら全然違うところに原因があるのかもしれません…

    manboさん、重ねて、ご回答ありがとうございました。
    また、なにかお心当たりがありましたら、アドバイスをいただけましたらうれしいです。

    フォームから送信された内容をFlamingoで保存すると投稿者IDは0になりますが、それをフォーム作成者のIDが入るようにして振り分けた方が簡単ではないでしょうか。

    トピック投稿者 hotori6996

    (@hotori6996)

    manboさん
    返信ありがとうございます。

    今データベースを確認したらたしかに投稿者IDが0になっていました!
    表示されているってことは保存されていると思っていました…

    何度も質問してしまって申し訳ないのですが、
    投稿者IDを取得できるようにするには、
    どのようにすれば良いでしょうか?
    こちらで少し調べたのですが、参考になりそうな記事がありませんでした…
    引き続き自分でも勉強してみます。
    もしmanboさんが良い方法をご存じなら、ご教示願えませんでしょうか?

    たびたびすみません。
    よろしく願い申し上げます。

    投稿者はフォーム送信者と考えれば、通常の使い方であれば設定する必要がないので 0 は当然だと思いますが、複数のユーザーで管理している場合は『自分宛のメッセージだけ』のように絞って見れた方が良いのかもしれないですね。

    一番簡単な方法はフォームから送信する際の$_POSTからフォームIDが取得できると思うので、それを元に投稿者IDを取得して受信メッセージにIDを設定すればどうでしょうか。

    あ、
    フィルターがありますが、それでは駄目なのでしょうか?

    トピック投稿者 hotori6996

    (@hotori6996)

    manbo様

    アドバイスありがとうございます。
    そうなんです!
    複数のユーザーで、「自分宛の受信メッセージだけ」を閲覧できるようにしたくて、
    今四苦八苦しているところなんです。

    >一番簡単な方法はフォームから送信する際の$_POSTからフォームIDが取得できると思うので、それを元に投>稿者IDを取得して受信メッセージにIDを設定すればどうでしょうか。

    アドバイスいただいたこの方法を試してみようと模索しているところなのですが、
    どこにどう記述していいのか…手探り状態です…無知でお恥ずかしい。

    >フィルターがありますが、それでは駄目なのでしょうか?
    フィルターとは、フィルターフックのことでしょうか?

    いろいろご提案いただき本当にありがとうございます。助かります。

    Flamingoの受信メッセージの所にある『すべての経路を表示する』で選択して絞り込むフィルターです。
    都度、設定が必要なのでこれでは思惑通りではないですかね?

    トピック投稿者 hotori6996

    (@hotori6996)

    manbo様

    表示させたい一覧が、個人情報を多分に含むもので、
    閲覧者が、無差別大多数のユーザー(想定)なので、
    他人宛のデータは見えてはいけないシステムなんです…

    ページを開いた瞬間に自動でフィルターを稼働させて他者宛のメッセージが見えないようにするとか、
    おなじくページを開いた瞬間に検索をかけさせて…とかも考えたのですが、
    現在はプラグインに直接介入する形でどうにかならないか試しているという感じです。
    やりようによっては、いろんな方法があるのかもしれませんが…

    プラグインを直接触るとアップデートで元通りなのでやらない方が良いです。

    多分これで出来ると思います。テーマのfunctions.phpに追加してみてください。

    // フォームから送信された内容を保存する際にフォーム作成者のIDをメッセージのpost_authorにする
    function set_flamingo_message_author( $data, $postarr ){
    	if( $data['post_type'] === 'flamingo_inbound' && $data['post_status'] !== 'trash' ) {
    		$data['post_author'] = get_post( $_POST['_wpcf7'] )->post_author;
    	}
    	return $data;
    }
    add_filter( 'wp_insert_post_data', 'set_flamingo_message_author', 99, 2 );
    
    // 管理画面の受信メッセージにてログインユーザーIDとフォーム作成者IDが同一のメッセージのみ表示
    function flamingo_display_messages( $query ) {
    global $user_ID;
    if( is_admin() && strstr( $_SERVER['REQUEST_URI'], 'flamingo_inbound' ) )
            $query->set( 'author', $user_ID );
    	return $query;
    }
    add_filter( 'pre_get_posts', 'flamingo_display_messages' );
    
    • この返信は6年、 3ヶ月前にmanboが編集しました。
    トピック投稿者 hotori6996

    (@hotori6996)

    manbo様

    記述していただいたコードを追加してみたところ、
    完璧に動作しました!
    すごいです!
    ありがとうございました!
    教えていただいたコードを参考にもっと勉強したいと思います。
    本当にありがとうございました!

    flamingoを複数ユーザーで閲覧させたい人など、
    私の質問とご回答くださったmanboさんのコードがご参考になれば嬉しいです。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック「Flamingoのカスタムフィールドキーについて」には新たに返信することはできません。