Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save huubl/33b08083413b36d336702c50d58a3485 to your computer and use it in GitHub Desktop.
Save huubl/33b08083413b36d336702c50d58a3485 to your computer and use it in GitHub Desktop.
Helper class for ACF and Gutenberg. Get blocks fields by passing block_id and post_id.
<?php
namespace JensSogaard;
class BlockHelper
{
/**
* Gets ACF fields for a specific block on a given post
* @author Jens Soegaard <jens@jenssogaard.com>
*/
public function getBlockFromPage(string $block_id, int $post_id)
{
$post = get_post($post_id);
if (!$post) return false;
$blocks = parse_blocks($post->post_content);
foreach($blocks as $block){
if ($block['attrs']['id'] !== $block_id) continue;
acf_setup_postdata($block['attrs']['data'], $block['attrs']['id'], true);
acf_reset_postdata($block['attrs']['id']);
return get_fields();
}
return false;
}
/**
* Return post id by checking for post instance, second POST param post_id (eg. if ACF ajax preview from Gutenberg), third GET page_id (WP preview)
* @author Jens Soegaard <jens@jenssogaard.com>
*/
public function getPostId()
{
if (get_the_ID()) return get_the_ID();
if (isset($_POST['post_id'])) return $_POST['post_id'];
if (isset($_GET['page_id'])) return $_GET['page_id'];
return false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment