Yes, acf_register_block_type() Adding inner blocks
To add support for inner blocks, use the
<InnerBlocks />
Component within your render template/callback to define an editable area. This special element will be displayed as a native “block inserter area” when editing content, and the saved “inner blocks content” when viewing content.
// Register a restricted block.
acf_register_block_type(array(
'name' => 'restricted',
'title' => 'Restricted',
'description' => 'A restricted content block.',
'category' => 'formatting',
'mode' => 'preview',
'supports' => array(
'jsx' => true
)
));
@brett I did something similar for an ACF block where I wanted to automatically show child pages, I set a var using $page_id = get_queried_object_id();
and used that var to set the post parent:
$page_id = get_queried_object_id();
$args = array(
'post_type' => 'page',
'posts_per_page' => -1,
'post_parent' => $page_id,
'order' => 'ASC',
'orderby' => 'menu_order'
);
$parent = new WP_Query( $args );
if ( $parent->have_posts() ) : ?>
This worked on the front end. Unfortunately for me this caused an issue in the WordPress admin – in WordPress admin screen all top level pages were showing. The slowed down my editing experience immensley so I instead opted to set the query using a tag instead of post parent.
@luiscolome confirmed via support ticket that the issue is ongoing. I’ve requested they add this to the documentation. It look me a bit of searching to find this forum post.
Is this issue ongoing?
I can set post array using print_r()
and using $featured_post->ID
. Using setup_postdata($post)
is not working inside Gutenberg block.
Thanks for pointing me right direction. Return format is set to both because the data is used in another query.
I rewrote to loop through the array, data is now showing.
<td>
<?php foreach ($colors as $color): ?>
<?php if($color['value'] == 'red') { ?>
<span>✔</span> // html checkmark
<?php } ?>
<?php endforeach; ?>
</td>
Yes, according to the documentation that should work. This method does indeed work when the checkbox field is a primary field. I am attempting to extract the checkbox values within a repeater (parent) field.
This method does work when the checkbox is within a repeater field.
I’m using WordPress 5.4, ACF 5.8.9.
I find that render_template
and adding a template file doesn’t render, yet using render_callback
and adding callback in functions.php
(or referencing via functions.php
) does.
Hi @brad100 use jquery to add an identifier to each marker
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function($){
var infowindow;
/*
* new_map
*
* This function will render a Google Map onto the selected jQuery element
*
* @type function
* @date 8/11/2013
* @since 4.3.0
*
* @param $el (jQuery element)
* @return n/a
*/
function new_map( $el ) {
// var
var $markers = $el.find('.marker');
// vars
var args = {
zoom : 16,
center : new google.maps.LatLng(0, 0),
mapTypeId : google.maps.MapTypeId.ROADMAP
};
// create map
var map = new google.maps.Map( $el[0], args);
// add a markers reference
map.markers = [];
// add markers
// add identifying number to each marker
var sidebar = 1;
$markers.each(function(){
add_marker( $(this), map, sidebar);
sidebar++;
});
// center map
center_map( map );
// return
return map;
}
/*
* add_marker
*
* This function will add a marker to the selected Google Map
*
* @type function
* @date 8/11/2013
* @since 4.3.0
*
* @param $marker (jQuery element)
* @param map (Google Map object)
* @return n/a
*/
function add_marker( $marker, map, sidebar) {
// var
var latlng = new google.maps.LatLng( $marker.attr('data-lat'), $marker.attr('data-lng') );
// create marker
var marker = new google.maps.Marker({
position : latlng,
map : map
});
// add to array
map.markers.push( marker );
// if marker contains HTML, add it to an infoWindow
if( $marker.html() )
{
// create info window
infowindow = new google.maps.InfoWindow({
content : $marker.html()
});
// Create a click on the sidebar list and open the info window
$('#m'+sidebar).click(function(){
// Close info windows
$.each(map.markers, function(index,value){
if(infowindow)
infowindow.close();
});
// Click on the marker
google.maps.event.trigger(marker, "click");
});
// show info window when marker is clicked
google.maps.event.addListener(marker, 'click', function() {
infowindow.open( map, marker );
});
}
}
/*
* center_map
*
* This function will center the map, showing all markers attached to this map
*
* @type function
* @date 8/11/2013
* @since 4.3.0
*
* @param map (Google Map object)
* @return n/a
*/
function center_map( map ) {
// vars
var bounds = new google.maps.LatLngBounds();
// loop through all markers and create bounds
$.each( map.markers, function( i, marker ){
var latlng = new google.maps.LatLng( marker.position.lat(), marker.position.lng() );
bounds.extend( latlng );
});
// only 1 marker?
if( map.markers.length == 1 )
{
// set center of map
map.setCenter( bounds.getCenter() );
map.setZoom( 16 );
}
else
{
// fit to bounds
map.fitBounds( bounds );
}
}
/*
* document ready
*
* This function will render each map when the document is ready (page has loaded)
*
* @type function
* @date 8/11/2013
* @since 5.0.0
*
* @param n/a
* @return n/a
*/
// global var
var map = null;
$(document).ready(function(){
$('.acf-map').each(function(){
// create map
map = new_map( $(this) );
});
});
});
</script>
<?php if( have_rows('locations') ): ?>
<ul class="buttons">
<?php while ( have_rows('locations') ) : the_row();
$location = get_sub_field('location');
// Create identifiers for markers [id=m#]
$i++;
?>
<li class="view_location" id="m<?=$i?>" data-lat="<?php echo $location['lat']; ?>" data-lng="<?php echo $location['lng']; ?>"><?php the_sub_field('title'); ?></li>
<?php endwhile; ?>
</ul>
<div class="acf-map">
<?php while ( have_rows('locations') ) : the_row();
$location = get_sub_field('location');
?>
<div class="marker" data-lat="<?php echo $location['lat']; ?>" data-lng="<?php echo $location['lng']; ?>">
<h4><?php the_sub_field('title'); ?></h4>
<p class="address"><?php echo $location['address']; ?></p>
<p><?php the_sub_field('description'); ?></p>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Cookie Policy. If you continue to use this site, you consent to our use of cookies.