Skip to main content
Bumped by Community user
Bumped by Community user
Bumped by Community user
added 1 character in body
Source Link
Álvaro Franz
  • 1.1k
  • 1
  • 9
  • 31

I am used to register plugin settings like this:

$string_sanitization = array(
    'sanitize_callback' => 'sanitize_text_field',
);

// Section Setting: Just some example string
register_setting(
    'whatever',                // Options group name
    'some_example_string',     // Option ID
    $string_sanitization       // Sanitization callback
);

And it works perfect.

But when it comes to options that store arrays of strings, I don't know what to use.

The docs contain a types key for the args, but it's note verynot clear enough, so I tried as follows:

register_setting(
    'whatever',                // Options group name
    'array_of_strings',        // Option ID
    array( 
       'type' => 'array',
       'sanitize_callback' => 'sanitize_text_field',
    )
);

In this case the options don't get saved.

One thing that works is to create a custom sanitization function that handles the array, as follows:

function sanitize_array_of_strings( $array ) {
    return array_map( 'sanitize_text_field', $array );
}

register_setting(
    'whatever',                // Options group name
    'array_of_strings',        // Option ID
    array( 
       'type' => 'array',
       'sanitize_callback' => 'My\Namespace\sanitize_array_of_strings',
    )
);

But it seems strange to me that WP does not have a native way to do this, so I ask to find out if you know of a native way to achieve this without having to create a custom function for that.

I am used to register plugin settings like this:

$string_sanitization = array(
    'sanitize_callback' => 'sanitize_text_field',
);

// Section Setting: Just some example string
register_setting(
    'whatever',                // Options group name
    'some_example_string',     // Option ID
    $string_sanitization       // Sanitization callback
);

And it works perfect.

But when it comes to options that store arrays of strings, I don't know what to use.

The docs contain a types key for the args, but it's note very clear, so I tried as follows:

register_setting(
    'whatever',                // Options group name
    'array_of_strings',        // Option ID
    array( 
       'type' => 'array',
       'sanitize_callback' => 'sanitize_text_field',
    )
);

In this case the options don't get saved.

One thing that works is to create a custom sanitization function that handles the array, as follows:

function sanitize_array_of_strings( $array ) {
    return array_map( 'sanitize_text_field', $array );
}

register_setting(
    'whatever',                // Options group name
    'array_of_strings',        // Option ID
    array( 
       'type' => 'array',
       'sanitize_callback' => 'My\Namespace\sanitize_array_of_strings',
    )
);

But it seems strange to me that WP does not have a native way to do this, so I ask to find out if you know of a native way to achieve this without having to create a custom function for that.

I am used to register plugin settings like this:

$string_sanitization = array(
    'sanitize_callback' => 'sanitize_text_field',
);

// Section Setting: Just some example string
register_setting(
    'whatever',                // Options group name
    'some_example_string',     // Option ID
    $string_sanitization       // Sanitization callback
);

And it works perfect.

But when it comes to options that store arrays of strings, I don't know what to use.

The docs contain a types key for the args, but it's not clear enough, so I tried as follows:

register_setting(
    'whatever',                // Options group name
    'array_of_strings',        // Option ID
    array( 
       'type' => 'array',
       'sanitize_callback' => 'sanitize_text_field',
    )
);

In this case the options don't get saved.

One thing that works is to create a custom sanitization function that handles the array, as follows:

function sanitize_array_of_strings( $array ) {
    return array_map( 'sanitize_text_field', $array );
}

register_setting(
    'whatever',                // Options group name
    'array_of_strings',        // Option ID
    array( 
       'type' => 'array',
       'sanitize_callback' => 'My\Namespace\sanitize_array_of_strings',
    )
);

But it seems strange to me that WP does not have a native way to do this, so I ask to find out if you know of a native way to achieve this without having to create a custom function for that.

added 420 characters in body
Source Link
Álvaro Franz
  • 1.1k
  • 1
  • 9
  • 31

I am used to register plugin settings like this:

$string_sanitization = array(
    'sanitize_callback' => 'sanitize_text_field',
);

// Section Setting: Just some example string
register_setting(
    'whatever',                // Options group name
    'some_example_string',     // Option ID
    $string_sanitization       // Sanitization callback
);

And it works perfect.

But when it comes to options that store arrays of strings, I don't know what to use.

The docs contain a types key for the args, but it's note very clear, so I tried as follows:

register_setting(
    'whatever',                // Options group name
    'array_of_strings',        // Option ID
    array( 
       'type' => 'array',
       'sanitize_callback' => 'sanitize_text_field',
    )
);

In this case the options don't get saved.

One thing that works is to create a custom sanitization function that handles the array, as follows:

function sanitize_array_of_strings( $array ) {
    return array_map( 'sanitize_text_field', $array );
}

register_setting(
    'whatever',                // Options group name
    'array_of_strings',        // Option ID
    array( 
       'type' => 'array',
       'sanitize_callback' => 'My\Namespace\sanitize_array_of_strings',
    )
);

But it seems strange to me that WP does not have a native way to do this, so I ask to find out if you know of a native way to achieve this without having to create a custom function for that.

I am used to register plugin settings like this:

$string_sanitization = array(
    'sanitize_callback' => 'sanitize_text_field',
);

// Section Setting: Just some example string
register_setting(
    'whatever',                // Options group name
    'some_example_string',     // Option ID
    $string_sanitization       // Sanitization callback
);

And it works perfect.

But when it comes to options that store arrays of strings, I don't know what to use.

The docs contain a types key for the args, but it's note very clear, so I tried as follows:

register_setting(
    'whatever',                // Options group name
    'array_of_strings',        // Option ID
    array( 
       'type' => 'array',
       'sanitize_callback' => 'sanitize_text_field',
    )
);

In this case the options don't get saved.

I am used to register plugin settings like this:

$string_sanitization = array(
    'sanitize_callback' => 'sanitize_text_field',
);

// Section Setting: Just some example string
register_setting(
    'whatever',                // Options group name
    'some_example_string',     // Option ID
    $string_sanitization       // Sanitization callback
);

And it works perfect.

But when it comes to options that store arrays of strings, I don't know what to use.

The docs contain a types key for the args, but it's note very clear, so I tried as follows:

register_setting(
    'whatever',                // Options group name
    'array_of_strings',        // Option ID
    array( 
       'type' => 'array',
       'sanitize_callback' => 'sanitize_text_field',
    )
);

In this case the options don't get saved.

One thing that works is to create a custom sanitization function that handles the array, as follows:

function sanitize_array_of_strings( $array ) {
    return array_map( 'sanitize_text_field', $array );
}

register_setting(
    'whatever',                // Options group name
    'array_of_strings',        // Option ID
    array( 
       'type' => 'array',
       'sanitize_callback' => 'My\Namespace\sanitize_array_of_strings',
    )
);

But it seems strange to me that WP does not have a native way to do this, so I ask to find out if you know of a native way to achieve this without having to create a custom function for that.

Source Link
Álvaro Franz
  • 1.1k
  • 1
  • 9
  • 31

Sanitize array callback for the WordPress Settings API

I am used to register plugin settings like this:

$string_sanitization = array(
    'sanitize_callback' => 'sanitize_text_field',
);

// Section Setting: Just some example string
register_setting(
    'whatever',                // Options group name
    'some_example_string',     // Option ID
    $string_sanitization       // Sanitization callback
);

And it works perfect.

But when it comes to options that store arrays of strings, I don't know what to use.

The docs contain a types key for the args, but it's note very clear, so I tried as follows:

register_setting(
    'whatever',                // Options group name
    'array_of_strings',        // Option ID
    array( 
       'type' => 'array',
       'sanitize_callback' => 'sanitize_text_field',
    )
);

In this case the options don't get saved.