質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

3425閲覧

【wordpress】Flamingoのエクスポートについて

onobeka

総合スコア25

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2019/01/29 07:53

表題の件について。
有識者の方がいれば教えていただければと思います。

現在wordpressのContact Form 7を利用しお問い合わせフォームを作成しております。
お問い合わせフォームから送信されたメッセージはプラグインのFlamingoを利用して、
送信者のアドレス帳とメッセージの管理を行っています。

アドレス帳はCSVの書き出しが可能で、
・名前
・メールアドレス
の出力を行える仕様となっております。

今回質問させていただきたいのは
問い合わせフォームで「参加者数」を入力するのですが、
この数値を下記に追加したいと思っております。
・Flamingo アドレス帳 一覧の一番右の列に追加
・csv出力を行う際に一番右の列に追加

プラグイン内にあるadmin.phpの203行の内容を下記に変更することで、
csv出力時の項目名を表示することが出来ましたが以降は悪戦苦闘して先に進めません・・

php

1$labels = array( 2 __( 'Email', 'flamingo' ), 3 __( 'Full name', 'flamingo' ), 4 __( 'First name', 'flamingo' ), 5 __( 'Last name', 'flamingo' ), 6 __( '参加者数', 'flamingo' ), 7);

お手数ではありますが
有識者の方がいらっしゃいましたらご助言お願い出来ますでしょうか。

知識が浅く不躾な質問かもしれませんが何卒宜しくお願い致します。

以上です
それでは失礼致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

質問の内容だけでは、情報が少なく回答が難しいのでヒントだけ...

どのようなフォームを定義されたのか不明ですが、Flamingo を使っている場合、フォームで入力された内容は、カスタム投稿タイプ flamingo_inbound に 保存されています。

カスタム投稿タイプ flamingo_inbound のカスタムフィールドを検索して、フィールドのキーと一致する項目を取得して、アドレス帳のCSV出力する部分で、一緒に出力するようにすれば、出力できると思います。

基本的な部分は、前回の( 【wordpress】Flamingoのエクスポートについて )と同じなので、カスタムフィールドのデータを取得できれば対応できると思います。


コメント欄を拝見して...
いろいろツッコミどころがありそうですが、気がついた点として...

  • get_field() を使われていますが、get_field() は、Advanced Custom Fields ( https://www.advancedcustomfields.com ) の関数なので、Advanced Custom Fields プラグインがインストールされていないと PHPのエラーが発生します。

  • $fields_str .= $myterm-> ." _field_your-partner "; も アロー演算子(->) と 結合演算子(.) が連続しているので、文法エラーですね。

  • $item->id で取得できるのは、アドレス帳の「投稿ID」で、メッセージの「投稿ID」ではありませんので、$item->id でメッセージを取得することはできません。


手順としては、

1.カスタム投稿タイプ flamingo_inbound から、メールアドレスが一致するメッセージの投稿IDを検索
2.メッセージの投稿IDからカスタムフィールドを検索
3.アドレス帳のデータと一緒に出力

という感じでしょうか。

コメントに記載された内容を書き直すとこんな感じでしょうか。

foreach ( $items as $item ) { $terms_str = ""; $myterms = get_the_terms( $item->id, 'flamingo_contact_tag' ); foreach( $myterms as $myterm ){ $terms_str .= $myterm->name ." "; } $args = array( 'post_type' => 'flamingo_inbound', 'posts_per_page' => -1, 'meta_query' => array( array( 'key' => '_from_email', 'value' => $item->email, ) ), ); $fields = get_posts( $args ); $flds = array(); foreach( $fields as $field ){ $flds[] = get_post_meta( $field->ID, '_field_your-partner', true ); } $row = array( $item->email, $item->get_prop( 'name' ), $item->get_prop( 'first_name' ), $item->get_prop( 'last_name' ), $terms_str, implode( ' ', $flds ) ); echo "\r\n" . flamingo_csv_row( $row ); }

参考URL:

投稿2019/01/29 09:06

編集2019/01/29 14:28
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

onobeka

2019/01/29 11:55

ご助言ありがとうございます! フォームに「参加者数」という入力欄(input要素)がありまして、 入力した値を[your-partner]というフィールドに入るように設定しています。 CHERRY様のご助言と下記ページを参考に、 https://private.hibou-web.com/archives/6730 こちらの記述を foreach ( $items as $item ) { //タグを出力 $terms_str = ""; $myterms = get_the_terms( $item->id, 'flamingo_contact_tag' ); foreach( $myterms as $myterm ){ $terms_str .= $myterm->name ." "; } $row = array( $item->email, $item->get_prop( 'name' ), $item->get_prop( 'first_name' ), $item->get_prop( 'last_name' ), //タグを出力 $terms_str, ); echo "\r\n" . flamingo_csv_row( $row ); } こちらに変更したところ不具合があり何も表示されなくなりました。。。 foreach ( $items as $item ) { $terms_str = ""; $myterms = get_the_terms( $item->id, 'flamingo_contact_tag' ); foreach( $myterms as $myterm ){ $terms_str .= $myterm->name ." "; } $fields_str = ""; $myfields = get_field( 'flamingo_inbound', $item->id); foreach( $myfields as $myfield ){ $fields_str .= $myterm-> ." _field_your-partner "; } $row = array( $item->email, $item->get_prop( 'name' ), $item->get_prop( 'first_name' ), $item->get_prop( 'last_name' ), $terms_str, $fields_str, ); echo "\r\n" . flamingo_csv_row( $row ); } 知識が浅いなりに調べたおりましたが、 どの部分が間違っているのかが分からないのでご助言いただけないでしょうか。 何度もすみません。
onobeka

2019/01/29 15:28

大変丁寧なご助言をありがとうございます。 いただいたスクリプトを設置したところ目的が達成されました! 参考サイトまで紹介していただき本当に感謝しております。 この度は本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問