acf-to-rest-api icon indicating copy to clipboard operation
acf-to-rest-api copied to clipboard

maximum execution time when get acf pages

Open simonjoom opened this issue 5 years ago • 0 comments

I found an infinite loop issue (maximum time)

When the developer create a custom register_rest_field in function.php on page content.

 register_rest_field(
		'page',
		'content',
		array(
				'get_callback'    => 'mycallback',
				'update_callback' => null,
				'schema'          => null,
		)
	); 

(I personaly use it a callback to encode the shortcodes and format the output).

In my test i concluded that is not good to use the same class class-wp-rest-controller and class-wp-rest-posts-controller from wordpress.

To avoid this problem, i decided to duplicate this 2 classes and add them in acf-to-rest-api folder
give at acf-to-rest-api the access to these new classes and remove completely the code who fetch the contents field that acf have no need; see below part commented.

I think there is some test to do on it. I wanted just to share my experience on this infinite loop

php
/* part comment remove the infinite loop
		if ( in_array( 'content', $fields, true ) ) {
			$data['content'] = array(
				'raw'           => $post->post_content,
				'rendered'      => post_password_required( $post ) ? '' : apply_filters( 'the_content', $post->post_content ),
				'protected'     => (bool) $post->post_password,
				'block_version' => block_version( $post->post_content ),
			);
		}

		if ( in_array( 'excerpt', $fields, true ) ) {
			$excerpt         = apply_filters( 'the_excerpt', apply_filters( 'get_the_excerpt', $post->post_excerpt, $post ) );
			$data['excerpt'] = array(
				'raw'       => $post->post_excerpt,
				'rendered'  => post_password_required( $post ) ? '' : $excerpt,
				'protected' => (bool) $post->post_password,
			);
		}
		 */
 

simonjoom avatar Jun 05 '19 21:06 simonjoom