ik gebruik op mijn WP website een theme om een 'directory' te maken waarin ik allerlei bedrijven wil listen.
Deze bedrijven (een listing) maak ik aan via de WP API, maar het vullen van de metadata wilt maar niet lukken.
Om dit type post (custom post type) via de API aan te kunnen maken heb ik wat aanpassingen gedaan in o.a. functions.php om dit type open te zetten voor de API. So far, so good.
Als ik nu vanuit mijn WP back-end een nieuw post van dit type maak en deze metadata velden vul dan zie ik dit ook terug als ik de posts van dit type ophaal via de API, inclusief de metadata:
Wanneer ik nu echter via de API een nieuwe post van dit type wil maken mét daarin een of meerdere gevulde metadata velden dan worden deze metadata velden niet opgeslagen. De post van dit specifieke type wordt verder gewoon aangemaakt, alleen de metadata niet.
Het gaat volgens mij over zogenaamde 'protected' metadata velden omdat het velden van een plugin zijn. Ze beginnen allemaal in elk geval met een underscore, zoals _website, _facebook, e.d.
Dit heb ik toegevoegd aan mijn functions.php om de metadata velden open te zetten voor de API:
Mijn request ziet er bijv. zo uit:
Heeft iemand een idee? Ik vermoed dat ik ergens iets kleins over het hoofd zie waardoor ik geen metadata mag updaten, maar ik weet niet wat. De rol van mijn user is Admin en zou alles moeten mogen ..
Deze bedrijven (een listing) maak ik aan via de WP API, maar het vullen van de metadata wilt maar niet lukken.
Om dit type post (custom post type) via de API aan te kunnen maken heb ik wat aanpassingen gedaan in o.a. functions.php om dit type open te zetten voor de API. So far, so good.
Als ik nu vanuit mijn WP back-end een nieuw post van dit type maak en deze metadata velden vul dan zie ik dit ook terug als ik de posts van dit type ophaal via de API, inclusief de metadata:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
| { "id": 10575, "date": "2018-03-23T20:33:40", "date_gmt": "2018-03-23T20:33:40", "guid": { "rendered": "http:\/\/mijnurl.com\/?post_type=lv_listing&p=10575" }, "modified": "2018-03-23T20:33:40", "modified_gmt": "2018-03-23T20:33:40", "slug": "test-meta", "status": "publish", "type": "lv_listing", "link": "http:\/\/mijnurl.com\/listing\/test-meta\/", "title": { "rendered": "test meta" }, "content": { "rendered": "<p>alksdjakl<\/p>\n", "protected": false }, "excerpt": { "rendered": "<p>asdasda<\/p>\n", "protected": false }, "author": 2, "featured_media": 0, "comment_status": "closed", "ping_status": "closed", "template": "", "listing_amenities": [], "listing_category": [430], "listing_location": [], "listing_keyword": [], "metadata": { "_edit_lock": ["1521837220:1"], "_edit_last": ["1"], "slide_template": ["default"], "jvfrm_spot_control_options": [""], "_vc_post_settings": ["a:1:{s:10:\"vc_grid_id\";a:0:{}}"], "_tagline": [""], "_website": ["www.hierkomteenurl.com"], "_email": [""], "_address": [""], "_phone1": [""], "_phone2": [""], "_facebook_link": [""], "_twitter_link": [""], "_instagram_link": [""], "_google_link": [""], "_linkedin_link": [""], "_youtube_link": [""], "detail_images": [""], "lv_listing_lat": ["0"], "lv_listing_lng": ["0"], "lv_listing_street_visible": ["0"], "lv_listing_street_lat": ["0"], "lv_listing_street_lng": ["0"], "lv_listing_street_heading": ["0"], "lv_listing_street_pitch": ["0"], "lv_listing_street_zoom": ["0"], "_featured_item": ["0"], "the_grid_item_custom_link_target": ["_self"], "the_grid_item_col": ["1"], "the_grid_item_row": ["1"], "the_grid_item_content_color": ["dark"], "the_grid_item_overlay_color": ["light"], "the_grid_item_video_ratio": ["4:3"], "the_grid_item_youtube_ratio": ["4:3"], "the_grid_item_vimeo_ratio": ["4:3"], "the_grid_item_wistia_ratio": ["4:3"] }, "_links": { "self": [{ "href": "http:\/\/mijnurl.com\/wp-json\/wp\/v2\/lv_listing\/10575" }], "collection": [{ "href": "http:\/\/mijnurl.com\/wp-json\/wp\/v2\/lv_listing" }], "about": [{ "href": "http:\/\/mijnurl.com\/wp-json\/wp\/v2\/types\/lv_listing" }], "author": [{ "embeddable": true, "href": "http:\/\/mijnurl.com\/wp-json\/wp\/v2\/users\/2" }], "replies": [{ "embeddable": true, "href": "http:\/\/mijnurl.com\/wp-json\/wp\/v2\/comments?post=10575" }], "wp:attachment": [{ "href": "http:\/\/mijnurl.com\/wp-json\/wp\/v2\/media?parent=10575" }], "wp:term": [{ "taxonomy": "listing_amenities", "embeddable": true, "href": "http:\/\/mijnurl.com\/wp-json\/wp\/v2\/listing_amenities?post=10575" }, { "taxonomy": "listing_category", "embeddable": true, "href": "http:\/\/mijnurl.com\/wp-json\/wp\/v2\/listing_category?post=10575" }, { "taxonomy": "listing_location", "embeddable": true, "href": "http:\/\/mijnurl.com\/wp-json\/wp\/v2\/listing_location?post=10575" }, { "taxonomy": "listing_keyword", "embeddable": true, "href": "http:\/\/mijnurl.com\/wp-json\/wp\/v2\/listing_keyword?post=10575" }], "curies": [{ "name": "wp", "href": "https:\/\/api.w.org\/{rel}", "templated": true }] } } |
Wanneer ik nu echter via de API een nieuwe post van dit type wil maken mét daarin een of meerdere gevulde metadata velden dan worden deze metadata velden niet opgeslagen. De post van dit specifieke type wordt verder gewoon aangemaakt, alleen de metadata niet.
Het gaat volgens mij over zogenaamde 'protected' metadata velden omdat het velden van een plugin zijn. Ze beginnen allemaal in elk geval met een underscore, zoals _website, _facebook, e.d.
Dit heb ik toegevoegd aan mijn functions.php om de metadata velden open te zetten voor de API:
code:
1
2
3
4
| register_rest_field( 'lv_listing', 'metadata', array( 'get_callback' => function ( $data ) { return get_post_meta( $data['id'], '', '' ); }, )); |
Mijn request ziet er bijv. zo uit:
code:
1
2
3
4
5
6
7
8
9
10
| { "title":"test meta", "content":"<p>alksdjakl</p>\n", "excerpt":"<p>asdasda</p>\n" ,"author":0 ,"listing_category":[388] ,"metadata":{"_linkedin_link":[ "tralala.com" ]} } |
Heeft iemand een idee? Ik vermoed dat ik ergens iets kleins over het hoofd zie waardoor ik geen metadata mag updaten, maar ik weet niet wat. De rol van mijn user is Admin en zou alles moeten mogen ..