Home Forums Backend Issues (wp-admin) Hooking into a field type


Hooking into a field type

  • I would like to have the option to output the textarea as a list, like the automatically add breaks and autop.

    I have modified the class file class-acf-field-textarea.php

    by adding this at the to the choices array;

    'li' => __("Add li tags"),

    and modifying the function format_value() like this;

    function format_value( $value, $post_id, $field ) {
    		// bail early if no value or not for template
    		if( empty($value) || !is_string($value) ) {
    			return $value;
    		// new lines
    		if( $field['new_lines'] == 'wpautop' ) {
    			$value = wpautop($value);
    		} elseif( $field['new_lines'] == 'br' ) {
    			$value = nl2br($value);
    		} elseif ($field['new_lines'] == 'li') {
    			$value = '<ul><li>'.$value;
    			$value = str_replace(array("\r\n", "\r", "\n"), "</li><li>", $value); 
    			$value .= '</li></ul>';
    			$value = str_replace("<li></li>", "", $value); 
    		// return
    		return $value;

    which works nicely but, of course, it will get overwritten by the next update and should be in a filter.

    How is the proper way to do this?

    According to the docs, the first part should be;

    function my_acf_load_field( $field ) {
    $field['choices'] = array(
    	'li' => 'Add li tags'
    return $field;
    add_filter('acf/load_field/type=textarea', 'my_acf_load_field');

    but this doesn’t work.

    and the second part I have to override the function in acf/load_values but I don’t know how this filter would work.

    Thanks for any help.

  • the acf/load_field filter will not work on field settings. Basically what you need to do is build a custom field type where you copy the existing field type and add your functionality to it.

Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.

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.