質問編集履歴

1

ソースコード変更しました。

2017/07/24 02:05

投稿

pekopoko
pekopoko

スコア11

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- 以下のソースコードはカスタムフィールドテンプレートを
11
+ 以下のソースコードはアドバンスカスタムフィールドテンプレートを
12
12
 
13
13
  プレビュー表示するためのソースコードです。
14
14
 
@@ -20,99 +20,125 @@
20
20
 
21
21
  ```ここに言語を入力
22
22
 
23
- // 下書きのpost_IDを取得
24
23
 
24
+
25
+ // カスタムフィールドをプレビュー対象にする
26
+
27
+
28
+
29
+ // preview用に保存された下書き情報(post)のIDを取得する
30
+
25
- function get_preview_id( $post_id ) {
31
+ function get_preview_id($postId)
32
+
33
+ {
26
34
 
27
35
  global $post;
28
36
 
29
- $preview_id = 0;
37
+ $previewId = 0;
30
38
 
31
- if ( $post->ID == $post_id && is_preview() && $preview = wp_get_post_autosave( $post->ID ) ) {
39
+
32
40
 
41
+ if (($post->ID == $postId) && $_GET['preview'] == true && ($postId == url_to_postid($_SERVER['REQUEST_URI']))) {
42
+
43
+ // プレビュー表示の際に、自動保存されたpostの下書き情報を取得する
44
+
45
+ $preview = wp_get_post_autosave($postId);
46
+
33
- $preview_id = $preview->ID;
47
+ if ($preview != false) { $previewId = $preview->ID; }
34
48
 
35
49
  }
36
50
 
51
+
52
+
37
- return $preview_id;
53
+ return $previewId;
38
54
 
39
55
  }
40
56
 
57
+
41
58
 
59
+ function get_preview_postmeta($metaValue, $postId, $metaKey, $single)
42
60
 
43
- // プレビュー時、meta情報をプレビュー用のmeta情報に置き換え
61
+ {
44
62
 
45
- function get_preview_postmeta( $return, $post_id, $meta_key, $single ) {
63
+ // プレビュー表示のときにmeta情報(custom fileds情報)を、
46
64
 
47
- if ( $preview_id = get_preview_id( $post_id ) ) {
65
+ // プレビュー用のmeta情報に置き換える
48
66
 
49
- if ( $post_id != $preview_id ) {
67
+ if ($previewId = get_preview_id($postId)) {
50
68
 
69
+ if ($postId != $previewId) {
70
+
51
- $return = get_post_meta( $preview_id, $meta_key, $single );
71
+ $metaValue = get_post_meta($previewId, $metaKey, $single);
52
72
 
53
73
  }
54
74
 
55
75
  }
56
76
 
77
+
78
+
57
- return $return;
79
+ return $metaValue;
58
80
 
59
81
  }
60
82
 
61
- add_filter( 'get_post_metadata', 'get_preview_postmeta', 10, 4 );
83
+ add_filter('get_post_metadata', 'get_preview_postmeta', 10, 4);
62
84
 
85
+
63
86
 
87
+
64
88
 
65
- // カスタムフィールドテンプレートの送信形式値を取得してプレビューのmeta情報を書き換え
89
+ // 下書き情報を作成するとき、対応すcustom filed情報も作成する
66
90
 
67
- function save_preview_postmeta( $post_ID ) {
91
+ // プレビューの際には、この時作ったcustom filed情報を読み出す
68
92
 
69
- global $wpdb;
93
+ // (読み出しているのが、get_preview_postmetaの部分)
70
94
 
95
+ function save_preview_postmeta($postId)
71
96
 
97
+ {
72
98
 
73
- if ( wp_is_post_revision( $post_ID ) ) {
99
+ global $wpdb, $acf; // $acfがadvanced custom filedsのglobal 変数
74
100
 
101
+
75
102
 
103
+ if (wp_is_post_revision($postId)) {
76
104
 
77
- $cft = new custom_field_template();
105
+ if (count($_POST['fields']) != 0) {
78
106
 
79
- if ( !empty($_REQUEST['custom-field-template-id']) && is_array($_REQUEST['custom-field-template-id']) ){
107
+ foreach ($_POST['fields'] as $key => $value) {
80
108
 
109
+ $field = $acf->get_acf_field($key);
110
+
111
+
112
+
81
- foreach ( $_REQUEST['custom-field-template-id'] as $cft_id ) {$fields = $cft->get_custom_fields();}
113
+ if (count(get_metadata('post', $postId, $field['name'], $value)) != 0) {
114
+
115
+ update_metadata('post', $postId, $field['name'], $value);
116
+
117
+ update_metadata('post', $postId, "_" . $field['name'], $field['key']);
118
+
119
+ } else {
120
+
121
+ add_metadata('post', $postId, $field['name'], $value);
122
+
123
+ add_metadata('post', $postId, "_" . $field['name'], $field['key']);
124
+
125
+ }
126
+
127
+ }
82
128
 
83
129
  }
84
130
 
85
-
86
-
87
- foreach($fields as $val2){
88
-
89
- if(is_array($_POST[mb_strtolower(rawurlencode(key($val2)))])){
90
-
91
- foreach( $_POST[mb_strtolower(rawurlencode(key($val2)))] as $cft_val ){
92
-
93
- if (count(get_metadata('post', $post_ID, key($val2), $cft_val)) != 0) {
94
-
95
- update_metadata( 'post', $post_ID, key($val2), $cft_val[0] );
96
-
97
- } else {
98
-
99
- add_metadata( 'post', $post_ID, key($val2), $cft_val[0] );
100
-
101
- }
102
-
103
- }
104
-
105
- }
106
-
107
- }
108
-
109
- do_action( 'save_preview_postmeta', $post_ID );
131
+ do_action('save_preview_postmeta', $postId);
110
132
 
111
133
  }
112
134
 
113
135
  }
114
136
 
115
- add_action( 'wp_insert_post', 'save_preview_postmeta' );
137
+ add_action('wp_insert_post', 'save_preview_postmeta');
138
+
139
+
140
+
141
+
116
142
 
117
143
  ```
118
144
 
@@ -122,13 +148,11 @@
122
148
 
123
149
  上記コードの
124
150
 
125
- ・custom-field-template → custom-field-suite
126
-
127
- $cft$cfs
151
+ acf → cfs
128
152
 
129
153
 
130
154
 
131
- 以上のように変更しましたが、うまくいきませんした。(画面に何も表示されず
155
+ 以上のように変更しましたが、プレビューで表示されずです。
132
156
 
133
157
 
134
158