質問編集履歴
1
ソースコード変更しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,67 +3,79 @@
|
|
3
3
|
カスタムフィールドスイートで入力した値を
|
4
4
|
投稿などのプレビューでも表示できるようにしたいです。
|
5
5
|
|
6
|
-
以下のソースコードはカスタムフィールドテンプレートを
|
6
|
+
以下のソースコードはアドバンスカスタムフィールドテンプレートを
|
7
7
|
プレビュー表示するためのソースコードです。
|
8
8
|
カスタムフィールドスイート用にカスタマイズしてできないかと考えています。
|
9
9
|
|
10
10
|
###ソースコード
|
11
11
|
```ここに言語を入力
|
12
|
+
|
13
|
+
// カスタムフィールドをプレビュー対象にする
|
14
|
+
|
12
|
-
// 下書きの
|
15
|
+
// preview用に保存された下書き情報(post)のIDを取得する
|
13
|
-
function get_preview_id(
|
16
|
+
function get_preview_id($postId)
|
17
|
+
{
|
14
18
|
global $post;
|
15
|
-
$
|
19
|
+
$previewId = 0;
|
20
|
+
|
16
|
-
if (
|
21
|
+
if (($post->ID == $postId) && $_GET['preview'] == true && ($postId == url_to_postid($_SERVER['REQUEST_URI']))) {
|
22
|
+
// プレビュー表示の際に、自動保存されたpostの下書き情報を取得する
|
23
|
+
$preview = wp_get_post_autosave($postId);
|
17
|
-
$
|
24
|
+
if ($preview != false) { $previewId = $preview->ID; }
|
18
25
|
}
|
26
|
+
|
19
|
-
return $
|
27
|
+
return $previewId;
|
20
28
|
}
|
21
|
-
|
22
|
-
|
29
|
+
|
23
|
-
function get_preview_postmeta(
|
30
|
+
function get_preview_postmeta($metaValue, $postId, $metaKey, $single)
|
31
|
+
{
|
32
|
+
// プレビュー表示のときにmeta情報(custom fileds情報)を、
|
33
|
+
// プレビュー用のmeta情報に置き換える
|
24
|
-
if (
|
34
|
+
if ($previewId = get_preview_id($postId)) {
|
25
|
-
if (
|
35
|
+
if ($postId != $previewId) {
|
26
|
-
$
|
36
|
+
$metaValue = get_post_meta($previewId, $metaKey, $single);
|
27
37
|
}
|
28
38
|
}
|
39
|
+
|
29
|
-
return $
|
40
|
+
return $metaValue;
|
30
41
|
}
|
31
|
-
add_filter(
|
42
|
+
add_filter('get_post_metadata', 'get_preview_postmeta', 10, 4);
|
43
|
+
|
44
|
+
|
32
|
-
|
45
|
+
// 下書き情報を作成するときに、対応するcustom filed情報も作成する
|
33
|
-
//
|
46
|
+
// プレビューの際には、この時作ったcustom filed情報を読み出す
|
47
|
+
// (読み出しているのが、get_preview_postmetaの部分)
|
34
|
-
function save_preview_postmeta(
|
48
|
+
function save_preview_postmeta($postId)
|
49
|
+
{
|
35
|
-
global $wpdb;
|
50
|
+
global $wpdb, $acf; // $acfがadvanced custom filedsのglobal 変数
|
36
|
-
|
51
|
+
|
37
|
-
if (
|
52
|
+
if (wp_is_post_revision($postId)) {
|
38
|
-
|
53
|
+
if (count($_POST['fields']) != 0) {
|
54
|
+
foreach ($_POST['fields'] as $key => $value) {
|
39
|
-
|
55
|
+
$field = $acf->get_acf_field($key);
|
56
|
+
|
57
|
+
if (count(get_metadata('post', $postId, $field['name'], $value)) != 0) {
|
58
|
+
update_metadata('post', $postId, $field['name'], $value);
|
40
|
-
|
59
|
+
update_metadata('post', $postId, "_" . $field['name'], $field['key']);
|
60
|
+
} else {
|
61
|
+
add_metadata('post', $postId, $field['name'], $value);
|
41
|
-
|
62
|
+
add_metadata('post', $postId, "_" . $field['name'], $field['key']);
|
42
|
-
|
63
|
+
}
|
43
|
-
|
44
|
-
foreach($fields as $val2){
|
45
|
-
if(is_array($_POST[mb_strtolower(rawurlencode(key($val2)))])){
|
46
|
-
foreach( $_POST[mb_strtolower(rawurlencode(key($val2)))] as $cft_val ){
|
47
|
-
if (count(get_metadata('post', $post_ID, key($val2), $cft_val)) != 0) {
|
48
|
-
update_metadata( 'post', $post_ID, key($val2), $cft_val[0] );
|
49
|
-
} else {
|
50
|
-
add_metadata( 'post', $post_ID, key($val2), $cft_val[0] );
|
51
|
-
}
|
52
64
|
}
|
53
|
-
}
|
54
65
|
}
|
55
|
-
|
66
|
+
do_action('save_preview_postmeta', $postId);
|
56
67
|
}
|
57
68
|
}
|
58
|
-
add_action(
|
69
|
+
add_action('wp_insert_post', 'save_preview_postmeta');
|
70
|
+
|
71
|
+
|
59
72
|
```
|
60
73
|
|
61
74
|
###試したこと
|
62
75
|
上記コードの
|
63
|
-
・custom-field-template → custom-field-suite
|
64
|
-
・
|
76
|
+
・acf → cfs
|
65
77
|
|
66
|
-
以上のように変更しましたが、
|
78
|
+
以上のように変更しましたが、プレビューで表示されずです。
|
67
79
|
|
68
80
|
|
69
81
|
分かる方がいらっしゃればご教授ください。
|