最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

templates - How does wordpress blocks?

programmeradmin1浏览0评论

Couldnt find an answer on this one so thought id ask here. So you have pages which are a post type, On each page you have the post_content which in my case - Is just a bunch of other blocks, Eg in SQL it looks like this:

<!-- wp:acf/test-block {
    "id": "block_id",
    "name": "acf\/test-block",
    "data": {
        "title": "title",
        "_title": "title"
    },
    "align": "false",
    "mode": "edit"
} /-->

So thats where the data is, But how does the actual HTML get on the page? How does that SQL data translate into a page full of blocks?

Couldnt find an answer on this one so thought id ask here. So you have pages which are a post type, On each page you have the post_content which in my case - Is just a bunch of other blocks, Eg in SQL it looks like this:

<!-- wp:acf/test-block {
    "id": "block_id",
    "name": "acf\/test-block",
    "data": {
        "title": "title",
        "_title": "title"
    },
    "align": "false",
    "mode": "edit"
} /-->

So thats where the data is, But how does the actual HTML get on the page? How does that SQL data translate into a page full of blocks?

Share Improve this question asked Feb 16, 2021 at 13:54 MrBadonkadonkMrBadonkadonk 212 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 3

But how does the actual HTML get on the page? How does that SQL data translate into a page full of blocks?

Normally the HTML for a block is inside the HTML comments.

However, much like shortcodes, ACF blocks are rendered in PHP, so when the post is processed during the_content filter, that block is replaced with the rendered HTML. WordPress knows to do this because ACF registered the block and provided a render callback function to call.

So this is essentially a more modern version of a shortcode with a better UI and developer features ( and the bonus that you don't get a raw shortcode displayed on the frontend if ACF is deactivated )

As for how ACF then retrieved the data from the database, you would need to ask in an ACF forum, as that is unique to ACF blocks.

HTML not wrapped in the comments is interpreted as classic content from the classic editor when edited.

发布评论

评论列表(0)

  1. 暂无评论
ok 不同模板 switch ($forum['model']) { /*case '0': include _include(APP_PATH . 'view/htm/read.htm'); break;*/ default: include _include(theme_load('read', $fid)); break; } } break; case '10': // 主题外链 / thread external link http_location(htmlspecialchars_decode(trim($thread['description']))); break; case '11': // 单页 / single page $attachlist = array(); $imagelist = array(); $thread['filelist'] = array(); $threadlist = NULL; $thread['files'] > 0 and list($attachlist, $imagelist, $thread['filelist']) = well_attach_find_by_tid($tid); $data = data_read_cache($tid); empty($data) and message(-1, lang('data_malformation')); $tidlist = $forum['threads'] ? page_find_by_fid($fid, $page, $pagesize) : NULL; if ($tidlist) { $tidarr = arrlist_values($tidlist, 'tid'); $threadlist = well_thread_find($tidarr, $pagesize); // 按之前tidlist排序 $threadlist = array2_sort_key($threadlist, $tidlist, 'tid'); } $allowpost = forum_access_user($fid, $gid, 'allowpost'); $allowupdate = forum_access_mod($fid, $gid, 'allowupdate'); $allowdelete = forum_access_mod($fid, $gid, 'allowdelete'); $access = array('allowpost' => $allowpost, 'allowupdate' => $allowupdate, 'allowdelete' => $allowdelete); $header['title'] = $thread['subject']; $header['mobile_link'] = $thread['url']; $header['keywords'] = $thread['keyword'] ? $thread['keyword'] : $thread['subject']; $header['description'] = $thread['description'] ? $thread['description'] : $thread['brief']; $_SESSION['fid'] = $fid; if ($ajax) { empty($conf['api_on']) and message(0, lang('closed')); $apilist['header'] = $header; $apilist['extra'] = $extra; $apilist['access'] = $access; $apilist['thread'] = well_thread_safe_info($thread); $apilist['thread_data'] = $data; $apilist['forum'] = $forum; $apilist['imagelist'] = $imagelist; $apilist['filelist'] = $thread['filelist']; $apilist['threadlist'] = $threadlist; message(0, $apilist); } else { include _include(theme_load('single_page', $fid)); } break; default: message(-1, lang('data_malformation')); break; } ?>