Skip to content

Instantly share code, notes, and snippets.

@lgladdy
lgladdy / custom-acf-json-paths.php
Last active January 11, 2024 16:09
ACF 6.2 custom load and save paths for ACF JSON
<?php
add_filter( 'acf/json/load_paths', 'set_custom_json_load_paths' );
function set_custom_json_load_paths( $paths ) {
$paths[] = get_stylesheet_directory() . '/acf-json/post-types';
$paths[] = get_stylesheet_directory() . '/acf-json/field-groups';
$paths[] = get_stylesheet_directory() . '/acf-json/taxonomies';
$paths[] = get_stylesheet_directory() . '/acf-json/option-pages';
return $paths;
}
@lgladdy
lgladdy / acf_blocks_parse_node_attr.js
Last active September 8, 2023 11:52
acf_blocks_parse_node_attr demo
acf.addFilter('acf_blocks_parse_node_attr', function( currentValue, nodeAttr ){
if (nodeAttr.name.startsWith('v-')) {
return { name: nodeAttr.name, value: nodeAttr.value };
}
return currentValue;
});
@lgladdy
lgladdy / block.json
Last active November 24, 2023 12:36
An example ACF block.json which disables align controls, but forces a default to wide
{
"name": "automatic-wide-width",
"title": "Automatically Align Wide",
"description": "A demo block.json for a forced align-wide block",
"apiVersion": 2,
"acf": {
"mode": "edit",
"renderTemplate": "render.php"
},
"supports": {
@lgladdy
lgladdy / acf-unsafe-html-detection-backtrace.php
Last active January 30, 2024 17:23
Print backtrace on the frontend when potentially unsafe HTML is removed
<?php
add_action( 'acf/will_remove_unsafe_html', 'print_backtrace_for_unsafe_html_removal', 10, 4 );
add_action( 'acf/removed_unsafe_html', 'print_backtrace_for_unsafe_html_removal', 10, 4 );
function print_backtrace_for_unsafe_html_removal( $function, $selector, $field_object, $post_id ) {
echo '<h4 style="color:red">Detected Potentially Unsafe HTML Modification</h4>';
echo '<pre>';
debug_print_backtrace();
echo '</pre>';
}
@lgladdy
lgladdy / acf_enable_detailed_escape_logging_to_php_error_log.php
Last active April 8, 2024 08:48
Always log the post ID and value of a HTML escaped field
<?php
add_action( 'acf/will_remove_unsafe_html', 'acf_enable_detailed_escape_logging_to_php_error_log', 10, 4 );
add_action( 'acf/removed_unsafe_html', 'acf_enable_detailed_escape_logging_to_php_error_log', 10, 4 );
function acf_enable_detailed_escape_logging_to_php_error_log( $function, $selector, $field_object, $post_id ) {
if ( $function === 'the_sub_field' ) {
$field = get_sub_field_object( $selector, true );
$value = ( is_array( $field ) && isset( $field['value'] ) ) ? $field['value'] : false;
} else {
$value = get_field( $selector, $post_id );
}