Sanitizes a bookmark field.
Description
Sanitizes the bookmark fields based on what the field name is. If the field has a strict value set, then it will be tested for that, else a more generic filtering is applied. After the more strict filter is applied, if the $context
is ‘raw’ then the value is immediately return.
Hooks exist for the more generic cases. With the ‘edit’ context, the ‘edit_$field’ filter will be called and passed the $value
and $bookmark_id
respectively.
With the ‘db’ context, the ‘pre_$field’ filter is called and passed the value.
The ‘display’ context is the final context and has the $field
has the filter name and is passed the $value
, $bookmark_id
, and $context
, respectively.
Parameters
$field
stringrequired- The bookmark field.
$value
mixedrequired- The bookmark field value.
$bookmark_id
intrequired- Bookmark ID.
$context
stringrequired- How to filter the field value. Accepts
'raw'
,'edit'
,'db'
,'display'
,'attribute'
, or'js'
. Default'display'
.
Source
function sanitize_bookmark_field( $field, $value, $bookmark_id, $context ) {
$int_fields = array( 'link_id', 'link_rating' );
if ( in_array( $field, $int_fields, true ) ) {
$value = (int) $value;
}
switch ( $field ) {
case 'link_category': // array( ints )
$value = array_map( 'absint', (array) $value );
/*
* We return here so that the categories aren't filtered.
* The 'link_category' filter is for the name of a link category, not an array of a link's link categories.
*/
return $value;
case 'link_visible': // bool stored as Y|N
$value = preg_replace( '/[^YNyn]/', '', $value );
break;
case 'link_target': // "enum"
$targets = array( '_top', '_blank' );
if ( ! in_array( $value, $targets, true ) ) {
$value = '';
}
break;
}
if ( 'raw' === $context ) {
return $value;
}
if ( 'edit' === $context ) {
/** This filter is documented in wp-includes/post.php */
$value = apply_filters( "edit_{$field}", $value, $bookmark_id );
if ( 'link_notes' === $field ) {
$value = esc_html( $value ); // textarea_escaped
} else {
$value = esc_attr( $value );
}
} elseif ( 'db' === $context ) {
/** This filter is documented in wp-includes/post.php */
$value = apply_filters( "pre_{$field}", $value );
} else {
/** This filter is documented in wp-includes/post.php */
$value = apply_filters( "{$field}", $value, $bookmark_id, $context );
if ( 'attribute' === $context ) {
$value = esc_attr( $value );
} elseif ( 'js' === $context ) {
$value = esc_js( $value );
}
}
// Restore the type for integer fields after esc_attr().
if ( in_array( $field, $int_fields, true ) ) {
$value = (int) $value;
}
return $value;
}
Hooks
- apply_filters( “edit_{$field}”,
mixed $value ,int $post_id ) Filters the value of a specific post field to edit.
- apply_filters( “pre_{$field}”,
mixed $value ) Filters the value of a specific post field before saving.
- apply_filters( “{$field}”,
mixed $value ,int $post_id ,string $context ) Filters the value of a specific post field for display.
Changelog
Version | Description |
---|---|
2.3.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.