{"id":19019892,"date":"2026-09-14T16:39:36","date_gmt":"2026-09-14T16:39:36","guid":{"rendered":"https:\/\/wordpress.org\/support\/?post_type=topic&#038;p=19019892"},"modified":"2026-09-14T16:55:31","modified_gmt":"2026-09-14T16:55:31","slug":"gravity-forms-edit-entries-is-broken","status":"publish","type":"topic","link":"https:\/\/wordpress.org\/support\/topic\/gravity-forms-edit-entries-is-broken\/","title":{"rendered":"Gravity Forms &#8211; Edit Entries is BROKEN!"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The latest update to the Gravity Forms &#8211; Edit Entries plugin contains an error that breaks both the front-end and backend wordpress site. This isa summary of what&#8217;s wrong<br \/><br \/><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Found it. There are two separate problems, and the first one is what&#8217;s blocking activation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The parse error: <code>&lt;?<\/code> instead of <code>&lt;?php<\/code><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Right after the closing <code>&lt;\/form&gt;<\/code> tag in <code>bp_add_quick_edit_markup()<\/code>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">php<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>        &lt;\/form&gt;\n        &lt;?\n\n        \/\/ RIP\n        wp_die();\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>short_open_tag<\/code> is off by default on PHP 7 and 8, so PHP never reopens into code there. Everything after it \u2014 <code>wp_die();<\/code>, the closing brace of the function, and the closing brace of the <code>if (class_exists('GFForms'))<\/code> block \u2014 gets treated as literal HTML. PHP then hits end of file with two braces still open and throws <code>Parse error: syntax error, unexpected end of file<\/code>. That happens at include time, which is exactly when WordPress sandboxes the activation, so you get the generic &#8220;fatal error&#8221; notice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fix:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">php<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>        &lt;\/form&gt;\n        &lt;?php\n\n        \/\/ RIP\n        wp_die();\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The runtime fatal: <code>fw_print()<\/code><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Even after that, <code>bpgf_edit_markup()<\/code> will crash your admin on the next page load:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">php<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function bpgf_edit_markup(){\n    $field = GFFormsModel::get_entry(176);\n    $form = GFAPI::get_form(5);\n    fw_print($form&#091;'fields']);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>fw_print()<\/code> isn&#8217;t a PHP or WordPress function \u2014 it&#8217;s from the Unyson theme framework. Unless Unyson is active, this is <code>Call to undefined function fw_print()<\/code>. And it&#8217;s hooked to <code>admin_footer<\/code>, so it fires on every single admin page. The hardcoded <code>176<\/code> and <code>5<\/code> make it clear this is leftover debug scaffolding. Delete the function and its <code>add_action('admin_footer', 'bpgf_edit_markup');<\/code> line, or comment out the <code>fw_print<\/code> call and swap it for <code>error_log( print_r( $form['fields'], true ) );<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>One more to watch<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Both AJAX handlers start with <code>if (!DOING_AJAX)<\/code>. On PHP 8, referencing an undefined constant is a fatal <code>Error<\/code>, not a notice like it was on PHP 7. <code>DOING_AJAX<\/code> is only defined when WordPress is actually handling an AJAX request, so use <code>if ( ! wp_doing_ajax() )<\/code> instead. Same for the unguarded <code>$_POST['nonce']<\/code> reads \u2014 those will throw warnings on a malformed request.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Make the <code>&lt;?php<\/code> fix first and try activating again. If it goes through, you&#8217;ve confirmed the diagnosis.<\/p>\n","protected":false},"template":"","class_list":["post-19019892","topic","type-topic","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/19019892","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic"}],"about":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/types\/topic"}],"version-history":[{"count":1,"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/19019892\/revisions"}],"predecessor-version":[{"id":19019907,"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/19019892\/revisions\/19019907"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/media?parent=19019892"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}