| | |
| | | $function = BASE.$method; |
| | | |
| | | if (function_exists($function)) { |
| | | return $function($block, $content); |
| | | // return $this->cache->remember( |
| | | // $block, |
| | | // function () use ($function, $block, $content) { |
| | | // return $function($block, $content); |
| | | // } |
| | | // ); |
| | | return $function($block, $content); |
| | | } else if (method_exists($this, $method)) { |
| | | return $this->$method($block, $content); |
| | | //TODO: Recache it |
| | | |
| | | // return $this->cache->remember( |
| | | // $block, |
| | | // function () use ($method, $block, $content) { |
| | |
| | | 'core/site-title', |
| | | 'jvb/forms' |
| | | ]; |
| | | if (!in_array($block['blockName'], $ignore)) { |
| | | // if (!in_array($block['blockName'], $ignore)) { |
| | | // jvbDump('No method found for '.print_r($block['blockName'], true)); |
| | | } |
| | | // } |
| | | } |
| | | if ($block['blockName'] === 'jvb/feed') { |
| | | // Enqueue the feed block script (it will automatically load dependencies) |
| | |
| | | 'main'; |
| | | |
| | | if ($content == '') { |
| | | return do_blocks(get_the_content(get_the_ID())); |
| | | global $post; |
| | | $block['innerBlocks'] = parse_blocks($post->post_content); |
| | | return $this->innerBlocks($block); |
| | | } else { |
| | | return $this->inside($block, $tag, $content); |
| | | } |
| | |
| | | { |
| | | global $post; |
| | | $ID = get_post_thumbnail_id($post->ID); |
| | | return '<figure'.$this->getClassesAndStyles($block['attrs']).'>'. |
| | | $this->image($ID). |
| | | '</figure>'; |
| | | $aOpen = $aClose = ''; |
| | | if(!is_single($ID)) { |
| | | $aOpen = '<a href="'.get_the_permalink($post->ID).'">'; |
| | | $aClose = '</a>'; |
| | | } |
| | | |
| | | return $aOpen.'<figure'.$this->getClassesAndStyles($block['attrs']).'>'. |
| | | apply_filters('jvbCoreFeaturedImage', $this->image($ID), $post->post_type). |
| | | '</figure>'.$aClose; |
| | | } |
| | | //core_post_navigation_link |
| | | //core_post_template |
| | |
| | | |
| | | protected function render_core_query(array $block, string $content):string |
| | | { |
| | | // jvbDump($block); |
| | | // $queryID = $block['attrs']['queryId']; |
| | | // $args = []; |
| | | // $inherit = $block['attrs']['inherit']??false; |
| | | // if ($inherit) { |
| | | // global $wp_query; |
| | | // $loop = $wp_query; |
| | | // } else { |
| | | // foreach ($block['attrs']['query'] as $key => $value) { |
| | | // if (empty($value)) { |
| | | // continue; |
| | | // } |
| | | // switch ($key) { |
| | | // case 'postType': |
| | | // $args['post_type'] = $value; |
| | | // break; |
| | | // case 'perPage': |
| | | // $args['posts_per_page'] = $value; |
| | | // break; |
| | | // case 'orderBy': |
| | | // $args['orderby'] = $value; |
| | | // break; |
| | | // case 'taxQuery': |
| | | // $taxQuery = []; |
| | | // foreach ($value as $tax => $terms) { |
| | | // $taxQuery[] = [ |
| | | // 'taxonomy' => $tax, |
| | | // 'terms' => $terms |
| | | // ]; |
| | | // } |
| | | // if (!empty($taxQuery)) { |
| | | // $args['tax_query'] = $taxQuery; |
| | | // if (count($taxQuery) > 1) { |
| | | // $args['tax_query']['relation'] = 'OR'; |
| | | // } |
| | | // } |
| | | // break; |
| | | // case 'sticky': |
| | | // if ($value === 'ignore') { |
| | | // $args['ignore_sticky_posts'] = true; |
| | | // } else if ($value === 'exclude'){ |
| | | // $args['post__not_in'] = get_option('sticky_posts'); |
| | | // } else if ($value === 'only') { |
| | | // $args['include'] = get_option('sticky_posts'); |
| | | // } |
| | | // break; |
| | | // case 'search': |
| | | // $args['s'] = $value; |
| | | // break; |
| | | // default: |
| | | // $args[$key] = $value; |
| | | // break; |
| | | // |
| | | // } |
| | | // } |
| | | // //Add in any args from the query string |
| | | // $search = 'query-'.$queryID; |
| | | // foreach ($_GET as $key => $value) { |
| | | // if (str_contains($key, $search)) { |
| | | // $key = str_replace($search, '', $key); |
| | | // if ($key === 'page') { |
| | | // $args['paged'] = (int)$value; |
| | | // } |
| | | // } |
| | | // } |
| | | // $loop = new WP_Query($args); |
| | | // } |
| | | |
| | | // $inner = $this->innerBlocks($block); |
| | | // foreach ($block['innerBlocks'] as $innerBlock) { |
| | | // switch ($innerBlock['blockName']) { |
| | | // case 'core/post-template': |
| | | // $inner .= '<ul class="item-grid">'; |
| | | // if ($loop->have_posts()) { |
| | | // while($loop->have_posts()) { |
| | | // $loop->the_post(); |
| | | // $inner .= $this->doBlocks |
| | | // } |
| | | // } |
| | | // $inner .= '</ul>'; |
| | | // break; |
| | | // } |
| | | // } |
| | | $queryID = $block['attrs']['queryId']; |
| | | $args = []; |
| | | $inherit = $block['attrs']['inherit']??false; |
| | | if ($inherit) { |
| | | global $wp_query; |
| | | $loop = $wp_query; |
| | | } else { |
| | | foreach ($block['attrs']['query'] as $key => $value) { |
| | | if (empty($value)) { |
| | | continue; |
| | | } |
| | | switch ($key) { |
| | | case 'postType': |
| | | if ($value === BASE.'progress'){ |
| | | $args['post_parent'] = 0; |
| | | } |
| | | $args['post_type'] = $value; |
| | | break; |
| | | case 'perPage': |
| | | $args['posts_per_page'] = $value; |
| | | break; |
| | | case 'orderBy': |
| | | $args['orderby'] = $value; |
| | | break; |
| | | case 'taxQuery': |
| | | $taxQuery = []; |
| | | foreach ($value as $tax => $terms) { |
| | | $taxQuery[] = [ |
| | | 'taxonomy' => $tax, |
| | | 'terms' => $terms |
| | | ]; |
| | | } |
| | | if (!empty($taxQuery)) { |
| | | $args['tax_query'] = $taxQuery; |
| | | if (count($taxQuery) > 1) { |
| | | $args['tax_query']['relation'] = 'OR'; |
| | | } |
| | | } |
| | | break; |
| | | case 'sticky': |
| | | if ($value === 'ignore') { |
| | | $args['ignore_sticky_posts'] = true; |
| | | } else if ($value === 'exclude'){ |
| | | $args['post__not_in'] = get_option('sticky_posts'); |
| | | } else if ($value === 'only') { |
| | | $args['include'] = get_option('sticky_posts'); |
| | | } |
| | | break; |
| | | case 'search': |
| | | $args['s'] = $value; |
| | | break; |
| | | default: |
| | | $args[$key] = $value; |
| | | break; |
| | | |
| | | } |
| | | } |
| | | //Add in any args from the query string |
| | | $search = 'query-'.$queryID; |
| | | foreach ($_GET as $key => $value) { |
| | | if (str_contains($key, $search)) { |
| | | $key = str_replace($search, '', $key); |
| | | if ($key === 'page') { |
| | | $args['paged'] = (int)$value; |
| | | } |
| | | } |
| | | } |
| | | $loop = new WP_Query($args); |
| | | } |
| | | |
| | | $inner = ''; |
| | | |
| | | foreach ($block['innerBlocks'] as $innerBlock) { |
| | | switch ($innerBlock['blockName']) { |
| | | case 'core/post-template': |
| | | $inner .= '<section class="item-grid">'; |
| | | if ($loop->have_posts()) { |
| | | while($loop->have_posts()) { |
| | | $loop->the_post(); |
| | | $postType = get_post_type(); |
| | | $inner .= '<div class="item '.jvbNoBase($postType).'">'.$this->innerBlocks($innerBlock).'</div>'; |
| | | } |
| | | } |
| | | $inner .= '</section>'; |
| | | break; |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | $tagName = (array_key_exists('tagName', $block['attrs'])) ? $block['attrs']['tagName'] : 'div'; |
| | | $out = '<'.$tagName.' class="loop">'.$this->innerBlocks($block).'</'.$tagName.'>'; |
| | | // if ($inherit) { |
| | | // wp_reset_postdata(); |
| | | // } |
| | | $out = '<'.$tagName.' class="loop">'.$inner.'</'.$tagName.'>'; |
| | | if ($inherit) { |
| | | wp_reset_postdata(); |
| | | } |
| | | return $out; |
| | | } |
| | | |