teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記修正

2019/01/29 14:28

投稿

CHERRY
CHERRY

スコア25234

answer CHANGED
@@ -4,4 +4,72 @@
4
4
 
5
5
  カスタム投稿タイプ flamingo_inbound のカスタムフィールドを検索して、フィールドのキーと一致する項目を取得して、アドレス帳のCSV出力する部分で、一緒に出力するようにすれば、出力できると思います。
6
6
 
7
- 基本的な部分は、前回の( [【wordpress】Flamingoのエクスポートについて](https://teratail.com/questions/169538) )と同じなので、カスタムフィールドのデータを取得できれば対応できると思います。
7
+ 基本的な部分は、前回の( [【wordpress】Flamingoのエクスポートについて](https://teratail.com/questions/169538) )と同じなので、カスタムフィールドのデータを取得できれば対応できると思います。
8
+
9
+ ----
10
+
11
+ コメント欄を拝見して...
12
+ いろいろツッコミどころがありそうですが、気がついた点として...
13
+
14
+ * `get_field()` を使われていますが、`get_field()` は、Advanced Custom Fields ( [https://www.advancedcustomfields.com](https://www.advancedcustomfields.com) ) の関数なので、Advanced Custom Fields プラグインがインストールされていないと PHPのエラーが発生します。
15
+
16
+ * `$fields_str .= $myterm-> ." _field_your-partner ";` も アロー演算子(`->`) と 結合演算子(`.`) が連続しているので、文法エラーですね。
17
+
18
+ * `$item->id` で取得できるのは、アドレス帳の「投稿ID」で、メッセージの「投稿ID」ではありませんので、`$item->id` でメッセージを取得することはできません。
19
+
20
+ ----
21
+
22
+ 手順としては、
23
+
24
+ 1.カスタム投稿タイプ flamingo_inbound から、メールアドレスが一致するメッセージの投稿IDを検索
25
+ 2.メッセージの投稿IDからカスタムフィールドを検索
26
+ 3.アドレス帳のデータと一緒に出力
27
+
28
+ という感じでしょうか。
29
+
30
+ コメントに記載された内容を書き直すとこんな感じでしょうか。
31
+
32
+ ```
33
+ foreach ( $items as $item ) {
34
+
35
+ $terms_str = "";
36
+ $myterms = get_the_terms( $item->id, 'flamingo_contact_tag' );
37
+ foreach( $myterms as $myterm ){
38
+ $terms_str .= $myterm->name ." ";
39
+ }
40
+
41
+ $args = array(
42
+ 'post_type' => 'flamingo_inbound',
43
+ 'posts_per_page' => -1,
44
+ 'meta_query' => array(
45
+ array(
46
+ 'key' => '_from_email',
47
+ 'value' => $item->email,
48
+ )
49
+ ),
50
+ );
51
+ $fields = get_posts( $args );
52
+
53
+ $flds = array();
54
+ foreach( $fields as $field ){
55
+ $flds[] = get_post_meta( $field->ID, '_field_your-partner', true );
56
+ }
57
+
58
+ $row = array(
59
+ $item->email,
60
+ $item->get_prop( 'name' ),
61
+ $item->get_prop( 'first_name' ),
62
+ $item->get_prop( 'last_name' ),
63
+ $terms_str,
64
+ implode( ' ', $flds )
65
+ );
66
+
67
+ echo "\r\n" . flamingo_csv_row( $row );
68
+ }
69
+ ```
70
+
71
+ 参考URL:
72
+ * [implode - PHPマニュアル](http://php.net/manual/ja/function.implode.php)
73
+ * [https://wpdocs.osdn.jp/カスタムフィールドの使い方](https://wpdocs.osdn.jp/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9)
74
+ * [http://wpdocs.osdn.jp/テンプレートタグ/get_posts](http://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_posts)
75
+ * [https://wpdocs.osdn.jp/関数リファレンス/get_post_meta](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_meta)