{"id":2895,"date":"2026-10-20T08:37:20","date_gmt":"2026-10-20T07:37:20","guid":{"rendered":"https:\/\/wpgeodirectory.com\/documentation\/article\/advanced-custom-fields-acf-with-geodirectory\/"},"modified":"2026-10-20T08:37:20","modified_gmt":"2026-10-20T07:37:20","slug":"advanced-custom-fields-acf-with-geodirectory","status":"publish","type":"gd_place","link":"https:\/\/wpgeodirectory.com\/documentation\/article\/how-tos\/advanced-custom-fields-acf-with-geodirectory\/","title":{"rendered":"Can I use Advanced Custom Fields (ACF) with GeoDirectory?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">GeoDirectory does not integrate with Advanced Custom Fields (ACF). It has its own custom fields system, and that is the one you should use for listing data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each GeoDirectory post type has its own database table (for Places it is <code>wp_geodir_gd_place_detail<\/code>, with your table prefix), and every custom field you add becomes a column in it. ACF stores its values in <code>wp_postmeta<\/code> instead, and GeoDirectory never reads them. An ACF field will not appear on the add listing form, in search filters, on the map, or in GeoDirectory blocks like GD > Post Meta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Splitting listing data between the two systems usually makes queries slower, because some data comes from the detail table and the rest from post meta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Adding fields the GeoDirectory way<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Go to Places > Settings > Custom Fields (or the Settings page of your own post type) and add the fields you need. See <a href=\"https:\/\/wpgeodirectory.com\/documentation\/article\/how-tos\/how-to-add-a-custom-field-to-custom-post-type\/\">how to add a custom field to a custom post type<\/a>. To show a field&#8217;s value anywhere on the listing page, use the GD > Post Meta block or shortcode:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-markup\">&#091;gd_post_meta key=&quot;your_field_key&quot;&#093;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">More on this in <a href=\"https:\/\/wpgeodirectory.com\/documentation\/article\/how-tos\/how-can-i-display-a-custom-field-database-value\/\">how to display a custom field database value<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">&#8220;Row size too large&#8221; with lots of fields<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sites with a very large number of fields on one post type can hit the MySQL error &#8220;Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535&#8221;. This is a MySQL limit on the total width of one table row, and you can get back under it without a second fields plugin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Short text fields are stored as <code>VARCHAR(254)<\/code> columns, and those count fully towards the limit. Textarea, HTML, URL and file fields are stored as <code>TEXT<\/code>, which takes up very little of the row. To get back under the limit:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Delete fields you no longer use.<\/li>\n\n\n\n<li>Use a textarea field for long free text instead of several text fields.<\/li>\n\n\n\n<li>Combine related values into one field where you can, for example one multiselect instead of many yes\/no fields.<\/li>\n\n\n\n<li>Ask your host whether your MySQL tables use the DYNAMIC row format, which handles wide tables better.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Take a database backup before deleting fields. Deleting a field removes its column and the data in it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>GeoDirectory does not integrate with Advanced Custom Fields (ACF). It has its own custom fields system, and that is the one you should use for listing data. Each GeoDirectory post type has its own database table (for Places it is wp_geodir_gd_place_detail, with your table prefix), and every custom field you add becomes a column in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"closed","template":"","meta":{"footnotes":""},"article\/tags":[],"article\/categories":[211,432],"class_list":["post-2895","gd_place","type-gd_place","status-publish","hentry","gd_placecategory-tips-tricks-more","gd_placecategory-how-tos"],"_links":{"self":[{"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/article\/2895","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/types\/gd_place"}],"author":[{"embeddable":true,"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/comments?post=2895"}],"version-history":[{"count":0,"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/article\/2895\/revisions"}],"wp:attachment":[{"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/media?parent=2895"}],"wp:term":[{"taxonomy":"gd_place_tags","embeddable":true,"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/article\/tags?post=2895"},{"taxonomy":"gd_placecategory","embeddable":true,"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/article\/categories?post=2895"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}